2021-10-09-文件上传小问题与XSS(pikachu)

2021-10-09 文件上传小问题与XSS(pikachu)

.htaccess漏洞利用

  1. 构造.htaccess文件并上传,文件内容可以是:

//方法一
SetHandler application/x-httpd-php //所有的文件当做php文件来解析
//方法二
AddType application/x-httpd-php .jpg //.jpg文件当作php文件解析

当上传.htaccess文件到upload目录时,upload目录下的文件会按其配置生效解析.

方法一这样配置有一个问题,apache会将所有的.jpg后缀的文件当作php文件解析,这样会明显影响系统的功能,改进代码如下,这样系统就只对文件名包含“info.png”字符串的文件进行解析。


setHandler application/x-httpd-php
 
  1. 上传一句话后门(info.png),使用蚁剑类工具连接,获得flag

.htaccess文件使用要开启apache httpd.config AllowOverride All

文件内容检测

在文件上传时,如果后缀和MIME都修改后仍无法上传,显示”文件错误“等情况,考虑是对文件内容进行了检测。制作图片马,上传后蚁剑连接:

copy 图片.jpg/b + 木马.php/a 木马.jpg

/b 表示以二进制方式打开
/a 表示以ASCII方式打

00截断

我以前以为所谓00截断就是在文件名中加%00进行截断,但这种方式是不对的,为什么呢?比如攻击者构造文件名:admintony.php%00.jpg,在提取后缀名的时候遇到%00则认为字符串结束了,那么他提取到的后缀名会是.php.php后缀又不允许上传所以上传失败了。

应该在数据包中必须含有上传后文件的目录情况才可以用,比如数据包中存在path: uploads/,那么攻击者可以通过修改path的值来构造paylod: uploads/aa.php%00

为什么修改path才可以,因为程序中检测的是文件的后缀名,如果后缀合法则拼接路径和文件名,那么攻击者修改了path以后的拼接结果为:uploads/aaa.php%00/aaa.png,移动文件的时候会将文件保存为uploads/aaa.php,从而达到Getshell效果。

img

XSS测试平台

https://xsshs.cn/

创建项目,创建完后会生成一个xss可用脚本地址

XSS的本质是获得cookie吗?(答:主要是为了获得cookie,XSS平台的意义就是将获取的cookie返回给攻击者)

利用别人的cookie,他们可以冒充真实的用户,在颁发cookie的那个网站中为所欲为,个人隐私在他们面前根本不存在。单纯的alert函数就是弹窗嘛,用户可能会看到自己的cookie被弹出来。但是有了XSS平台之后,每个触发漏洞的用户的cookie就会被发送到攻击者搭建的XSS平台上。

跨站脚本攻击XSS,是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。

常用的XSS攻击手段和目的有:   1、盗用cookie,获取敏感信息。   2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。   3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。   4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。   5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDos攻击的效果。

ctfhub那道题,ctf的题目应该是让我们获得别人的cookie,但是这是ctf的题目,不是公共的服务,没有其他用户,所以ctf模拟了一个机器人。那就很清楚了,我们的目标就是获得这个机器人的Cookie,然后"盗它的号",所以获取了这个机器人的Cookie就意味着成功。所以理所应当的,flag也就藏在cookie里了。所以第二个文本框就是模拟别人点击这个包含xss的链接的情形。

XSS 钓鱼; XSS获取cookie ;XSS键盘记录还有很多需要学习的……

pikachu 之XSS练习

反射型XSS(GET)

当输入内容时, 内容被执行写入当网页:(who is ”xxx",)

image-20211009145428005.png

所以可以直接注入: 盗取用户cookie

image-20211009150000616.png

image-20211009145656607.png

复制当前的url 输入到新的界面中 就可以直接执行刚才XSS的效果。GET方式的XSS漏洞更加容易被利用,一般利用的方式是将带有跨站脚本的URL伪装后发送给目标。比如某个论坛出现了XSS漏洞 我们就可以借此利用 来欺骗受害者 进而达到XSS攻击的目的。用户一看前面的域名是比较著名的网站,以为没问题。后面的却包含了恶意的JavaScript代码,已get的方式提交到了网站,被返回到用户的浏览器中执行了。

上述方式是弹窗的形式,这样就可以把盗取的cookie保存到自己的站点中

登录http://127.0.0.1/pikachu/pkxss后台查看获取的cookie

image-20211009152256904.png
反射型XSS (Post)

登录页面是必不可少的,登录之后也是一个输入框。

image-20211009153030104.png
image-20211009153057733.png

POST请求区别与GET请求,POST请求不能从URL让用户向服务器提交数据。所以为了进行注入,需要让用户代替攻击者提交POST请求,这就需要攻击者自己搭建站点(http://127.0.0.1/pikachu/pkxss 在这里相当于自己的站点),然后在站点内写一个POST表单(/xcookie/post.html),将我们搭建出的连接发给用户,这样就能让用户帮攻击者提交POST请求发给存在XSS漏洞的中。这样就能窃取到用户的cookie,就能伪造用户登陆达到破坏的目的。

  • form表单中action就是提交存在漏洞的网页的地址。

  • input中value的值就是我们输入的恶意代码。

  • 伪造好的连接:http://127.0.0.1/pikachu/pkxss/xcookie/post.html

image-20211009154208493.png

点击之后是下面这个伪造的页面,点击submit时数据已经post走了,再一次盗取cookie保存下来,还获取了用户名和密码(md5加密)

image-20211009153222578.png
image-20211009154935099.png
image-20211009155024170.png
存储型XSS

试一下alert(1),有弹窗说明有漏洞。

存储型xss和反射型的区别:就是当你刷新这个界面,还是会出现这个弹窗


image-20211009155326118.png

写入和之前一样的payload保存窃取的cookie:(每刷新一次就获取一次)

image-20211009160652045.png

存储型XSS漏洞还可以和钓鱼网站以及窃取键盘输入结合起来。

  • 钓鱼

    • 弹出伪造验证框脚本(xfish/fish.php)

    • 将用户输入的信息进行处理并保存(xfish/xfish.php)

    • 钓鱼Payload:

    这里有个巨坑,由于这里用的phpstudy搭建的环境,会发现一直提交授权,一直输入密码都不会将数据写入数据库。这个坑后来找到了原因:PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本,我这里使用的是phpStudy搭建的环境,默认是以CGI版本运行PHP。后续通过重新搭建环境解决此问题。

    这里使用作弊方法,直接将账号密码写入

    ———————————————— 原文链接:https://blog.csdn.net/witwitwiter/article/details/115767014

  • 键盘记录

    • 制作键盘的js,异步发送给键盘记录脚本(rkeypress/rk.js)

    • 将接受的按键记录处理并保存(rkeypress/rkserver.php)

    • 键盘记录Payload:

DOM型xss

首先我们在输入框中随便输入一串字符。可以看到弹出一个what do you see?的提示。我们查看一下源码看到底做了一个什么样的操作。代码太长比较难找,Ctrl+F搜索一下what定位到源码的相关位置。

image-20211009162947567.png
image-20211009163115359.png

可以看到这里有一段js的代码,我们可以简单分析一下这段代码。以前我们接触到的反射型和存储型都是通过后台输出,我们可以从源代码中看到输入点就是源码中的input标签,DOM型的XSS漏洞通过了解我们可以知道是纯前端的漏洞,分析源码可移知道我们输入后得到一个字符串,然后通过字符串拼接的方式拼接到a href中。输出点我们可以从标签构造一个闭包函数。

payload:' οnclick=alert(1)
拼接结果:

其实这种DOM注入没有什么太大的用处,因为既没有发送到后台进行操作,也没有输入到URL中去。

DOM型xss-x
image-20211009163552680.png

查看源码:


image-20211009163630205.png

payload和刚才的一样,也是首先闭合标签。

DOM型XSS只在前端,与后端毫无关系。

DOM-X型危害更大,它能够像反射型一样在URL中体现,将URL发给了受害者就能进行攻击。

参考资料

https://blog.csdn.net/redwand/article/details/104105269

https://www.cnblogs.com/chalan630/p/12547844.html

https://blog.csdn.net/qq_17046291/article/details/99336431

https://blog.csdn.net/redwand/article/details/104152782

https://blog.csdn.net/weixin_42299862/article/details/108518706

https://blog.csdn.net/weixin_43899561/article/details/89429726

https://blog.csdn.net/weixin_43526443/article/details/105737140

https://blog.csdn.net/witwitwiter/article/details/115797971

你可能感兴趣的:(2021-10-09-文件上传小问题与XSS(pikachu))