首先,文章的前言
为了记录实战中遇到的问题和思考,本文旨在分享思路,自我总结。本文中的目标站点是SRC授权的站点,为了防止漏码,删除了一些实际的链接,比如链接目录名。整个测试过程涉及未经授权的访问,暴力破解,存储XSS,SQL注入,最后得到外壳,这是略显曲折。

PS:截止提交,漏洞已提交给厂商,并验证已修复。
二。信息采集
打开目标站点,登录系统界面。安装到intranet地址的VNC远程协助链接。经过测试,登录没有验证码,失败次数被锁定。可以试试暴力破解。这里,先收集信息。
目的地:http://1.2.3.4/login.aspx
script: aspx,从登录页面得知;
服务器:IIS7.5,通过404和403错误页可用;
数据库:可能是SQL Server,常见组合;
安全性:未知,IP端口扫描会被屏蔽一段时间,但是测试和1=1不屏蔽,没有WAF或者严格保护策略不启动;
通过检查返回的数据包,发现服务器是nginx/1.17.2,判断应该有反向代理。
第三,暴力破解
通过对现有信息的分析,首选暴力破解。密码md5前端在系统首页加密后传输。这里选择burp的HASH-MD5进行爆破。
系统登录失败返回的信息是“登录失败xxx”,无法确认用户是否存在。
查看页面的源代码,我们发现http://1.2.3.4/client/是存在的。
该页面不使用md5加密密码,也就是说
首页:http://1.2.3.4/密码加密传输。
客户端:http://1.2.3.4/client/密码明文传输
这里使用http://1.2.3.4/client/进行爆破,不需要MD5加密来提高效率。但是,使用name500和一个自定义的字典,包括常见的测试账号,3位数,4位数,5位数等。,构成了5000多个用户名,爆破密码为123456,88888,11111,但都没有爆破。
当时的思路是先确定用户名,比如工号等。,然后用弱密码炸账号。没想过直接爆admin,因为当时感觉后台可能不会登录这里。现在我觉得我也可以直接盲爆admin用户了。
所以当时先收集用户名,用Google语法,Site:xxx工号,但是没有收获。只有对于有登录界面的系统,只有掌握了用户名的规则,才能提高爆号的概率,大概就是这里的工号。当用户名收集失败时,会打开目录扫描以查看是否有任何敏感信息。
四。越权存取
通过对站点的目录扫描,存在以下目录和文件。
逐一访问:
Css.aspx access弹出登录超时,跳转到登录界面,禁用js access空white;
Reg.aspx访问软件的注册页面;
main.aspx访问炸弹登录并超时。跳转到登录界面,禁用js,返回页面如下:
查看源代码,发现main_d.aspx存在如下:
禁用对main_d.aspx的js访问以返回到以下页面:
继续检查源代码,找到下面的地址。
禁用对http://1.2.3.4/MyWork/Richeng/RichengmyList_show.aspx ID = 12的js访问
点击修改,这里没有被测id的SQL注入。
这个页面有很多附件,包括体检附件登记表。单击下载链接,如下所示:
点击下载跳转到登录界面。
在这里,我感觉有什么文件都可以下载,但是可能需要你登录,然后爆掉你的账号就可以测试了。
http://1.2.3.4/file_down.aspx编号=file/liaotian/201922xx.xls
下载文件并尝试构建http://1.2.3.4/file/liaotian/201922xx.xls.
如上获取本单位员工编号,用excel生成暴力破解的员工编号列表。
5.登录到系统
已获取上述工号组合,生成01111-05555进行爆破,使用密码123456,11111,88888,123qwe,qwe123,123123,123321。
使用密码123321时,成功爆破了一个弱密码用户。
使用此帐户登录系统。
系统中有许多功能模块。测试以前下载的文件。
http://1.2.3.4/file_down.aspx编号=file/liaotian/201922xx.xls
尝试下载web.config
http://1.2.3.4/file_down.aspx号码=web.config
测试中没有任意文件下载,修改文件后直接定位到文件,这样下载,
逐个测试后续系统的功能点。
六。文件上传
后台功能有四个上传点。
上传点1-密封上传:
上传点2-邮件附件:

上传点3-头像上传:
上传点4:善良编辑器4.1.10编辑器,貌似无解。
上传点1,上传文件的路径为:/seal/2021815238.png。
该目录不限制脚本执行,但是脚本文件不能上传。试图绕过它失败了。
上传点2,上传文件的路径为:/file/file/email file/2021081523 . png
该目录限制脚本执行,即脚本文件不能在/file目录中执行。
这个上传点可以上传aspx之类的文件,但是后缀是。未知。
后续注入点发现上传后缀写在数据库中,可以通过update语句添加后缀,但是没有跨目录的方法。即使上传了aspx脚本文件,也无法执行。
上传文件后,截图如下:
后续查看数据库,允许上传的文件后缀如下:
上传点3,上传任意文件。上传后,路径为/SystemManage/User/file/。
测试目录限制脚本执行,并且不能跨目录。
七。存储XSS
由于上述后台上传功能测试后getshell无法上传,我们会考虑是否能找到权限高的账号,管理员账号可能有修改上传文件格式的权限。
此时,存储的XSS存在于测试邮件中,用户cookie可用于发送邮件。
将邮件发送给自己,当您的收件箱打开时:
你可以发送一封带有XSS的邮件给管理员,当管理员打开邮件时,你可以得到管理员的cookie。在这里,使用服务器酱,可以实现获取cookie后的微信提醒通知,还可以将邮件发送给自己进行测试。
写邮件,插入XSS平台的有效载荷。
收件箱打开后
微信收到服务器酱的通知
登录XSS平台查看,成功获取用户cookie信息。
在这里构造XSS后,会给管理员发送一封标题为【问题建议】的邮件,增加了管理员打开的概率,即打开邮件可以获得管理员的cookie。
同时,在为收件人选择邮件的地方,可以找到组织结构,可以列出所有用户的工号、部门、姓名信息。
所以可以收集用户的工号,这里找到的管理员就是admin。在等待xss的同时,您还构建了一个字典来轰炸admin。
然后admin的密码被成功爆破,发现在“弱密码TOP1000”中没有找到密码。如果从一开始就把admin展开,可能就不会展开了。我个人习惯是爆TOP1000,一开始也不确定管理员是不是admin。
这里也说明了拥有一本强有力的字典是多么重要。
使用admin登录系统后,只有以下两个功能模块。没有修改上传设置的功能,我很失望。
发现测试登录管理员也没用,还是上不了壳。既然没办法上传,那就找注入点。如果是sa的注入点,拿到壳的概率要高很多。
八、SQL注入
于是我回到后台每个功能点进行测试。经过一番测试,终于找到了注射点。链接如下:
测试1=1页正常。
测试1=2页异常
突发数据库版本信息
如上确认SQL注入的存在,并使用sqlmap来利用它。当前用户是SA。
Test-—os-shell命令失败,可能被安全设备截获。
这个时候还查了数据库的总表,发现管理后台某一点的文件上传格式在数据库中是可以后缀的,但是不能跨目录,所以即使可以上传脚本,也无法获取外壳。
九、GetShell
经过手动测试,注入点支持栈注入。这里尝试用sp_oacreate写一匹马。SQL如下所示:
声明@f int,@ g int“exec sp_oacreate”脚本。FileSystemObject ',@ f outputEXEC SP_OAMETHOD @f,' CreateTextFile ',@f OUTPUT,' c:shell.asp ',1;EXEC sp_oamethod @f,' WriteLine ',null,''
但是你需要知道网站的根目录。在这里,您可以使用xp_dirtree来遍历目录。SQL如下所示:
create table dirs,depth int,filee int);
insert dirs exec xp_dirtree 'c: ',1,1
创建表后,首先执行以下查询。在这里,查询驱动器C目录中的文件夹和文件:
http://1.2.3.4/WorkFlow/AddWorkFlow_add_Next.aspx tmp = 0.8307731177113578 add = UpNodeNum = 11, flow number = 20189139012187 ';insert dirs exec xp_dirtree 'c: ',1,1。- FormId=86Number=202181414
如果页面恢复正常,则语句执行成功,然后到sqlmap查询dirs表下的内容,就是c盘的目录内容:
使用上述方法,成功找到了d:OA下的网站根目录。
执行SQL语句来写文件shell.asp
声明@f int,@ g int“exec sp_oacreate”脚本。FileSystemObject ',@ f outputEXEC SP_OAMETHOD @f,' CreateTextFile ',@f OUTPUT,' d:OAshell.asp ',1;EXEC sp_oamethod @f,' WriteLine ',null,''
打开链接:http://1 . 2 . 3 . 4/shell . ASP空白色,中国菜刀连接成功。
上传冰蝎,然后就可以用socks代理访问内网了。

通过systeminfo收集系统信息,可用于后续维权。
以上成功获得目标站点外壳。
X.摘要
渗透往往需要细心和耐心,再加上一点运气。当我们找不到背景中的贝壳时,我们可以试着找到背景中的SQL注入。权限高的注入点可以直接写外壳。或者当我们有SQL注入点但是不会写shell的时候,可以尝试读取管理员账号的密码,登录后台测试是否存在文件上传漏洞,从而获取shell。关注不同漏洞的危害,并加以组合,往往能取得意想不到的效果。
这是整篇文章的结尾。感谢您的阅读。希望你能从中有所收获。


