freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

HTTP数据包&请求方法&状态码判断&爆破加密密码&利用数据包
zero1234 2025-02-05 20:08:53 19915
所属地 广东省

前言

自己本身是一个学习两年网络安全的小白师傅,想想两年来都没有系统的学习过,所以就想着看看小迪的课程,顺便将自己的理解与小迪的课程做一个结合,以文字+图片的形式呈现给大家。看了小迪的课程,真觉得小迪的课程是yyds!-- 我看的是2024年的视频

学习内容

【基础入门】第10天:HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断

学习地址:【小迪安全】全栈网络安全 | 渗透测试 | 高级红蓝对抗 V2024最新版 (完)_哔哩哔哩_bilibili

学习目录

1737982103_679780971230c0f144de6.png!small?1737982091015

1737982125_679780adcc0547c0b4978.png!small?1737982114274

正式开始

知识点一:HTTP数据包

我们常说的中间人攻击,就是下图,它其实就是一个很简单的东西。例如我们前面课程学的抓包软件,我们抓到的数据包,对这个数据包进行修改,就完成了一次攻击人的攻击。例如:浏览器点击一个功能点->BP工具拦截到了这个数据包->BP工具对这个数据包进行修改->发送到我们的电脑(服务器)->我们的电脑(服务器)发送到BP工具->BP工具发送给浏览器。就完成了一个中间人攻击~

1737982255_6797812fb1d9c8573ee60.png!small?1737982243768

那么我们最常见的数据包有:GET数据包、POST数据包,这两个数据包有什么区别呢?最简单的区别在于他们发生的位置吧。GET数据包在我们访问页面的时候,例如:点击功能点、点击不同的页面等,而POST数据包在我们提交数据的时候,例如:头像上传、密码修改、登录等。

1737982283_6797814b57f48d3f250f2.png!small?17379822723431737982369_679781a1c96fa342691be.png!small?1737982357821

如何捕获这些数据包呢?1.用浏览器自带的流量捕捉 2.使用流量拦截工具进行捕捉

浏览器自带的流量捕捉,可以打开浏览器,点击F12

1737983075_6797846316224e21d0807.png!small?1737983063118


想设置控制台在下边的师傅可以这样设置

1737983306_6797854a5a782115286ae.png!small?1737983294327

当我们搜索python的时候,可以看到这里有各种各样的数据包,这就是我们搜索这一个功能产生的各种数据包。

1737983135_6797849f2a4fceb67a580.png!small?1737983123179

1737983372_6797858c246b87e8ad6c3.png!small?1737983360268


可以看到我们搜索使用的是GET请求

GET请求的第二个特征也出现了,可以看到我们的URL上,有许多的参数:q=、qs=呀,这就是GET请求的第二特征,请求的参数在URL上,就是我们可以看到,具体使用了什么参数。

诶有的师傅就疑惑了,GET请求不是不能传参吗?这是网上错误的说法,最准确的说法应该是GET请求不能传较大数据的参数,也就是较多的参数,也就是说它可以传参~

当然,可能有小白师傅问这么多种数据包我怎么知道哪个数据包是GET,哪个数据包是啥啥的、这些不用担心以后会讲,这里先明白什么是GET请求即可。

这里我们使用BP工具进行示范,不懂如何使用BP工具的可以查看第六天课程

举例:

1737984360_6797896889e695a44dc59.png!small?1737984348744

1737984405_67978995f3829b6d1dff9.png!small?1737984394200

可以看到,单单访问域名,是GET请求且没带参数

我们带上参数,那么也会在工具中体现。

1737984447_679789bfc18408b77051b.png!small?1737984436704

1737984461_679789cd32ae8b7fdfbe9.png!small?1737984449464


POST请求

1737983771_6797871b853dac930d709.png!small?1737983759739

看出区别了吗?区别很简单,在正文部分是否有参数即可分辨是不是POST请求了。POST请求的第二特征,数据包中的正文带参数~

这是一些对POST与GET请求的总结,其他的请求可以暂时不用管

1737984123_6797887be8ffe5303eca5.png!small?1737984112223

请求头信息是哪些呢?我们可以稍稍了解一下常见的

1737984684_67978aac652b17d6f0eec.png!small?1737984672602

总结:

该知识点让我们了解数据包的基础构成,请求头+正文部分。还让我们区分了我们渗透测试当中最常见的GET请求与POST请求,在安全性上来说POST请求的安全性是较高一些的,当然通过这节课的学习,其实POST请求的参数部分我们也可以通过工具进行捕获、修改,所以在安全性上并无区别。GET与POST请求的区别,只需要记住传输数据大小有区别,参数是否在URL上有区别。值得注意的是POST请求与GET请求是可以同时存在的(当然这样并不严谨,但这样理解会更加简单),就是URL上有参数、而正文部分也有参数、这就是我们说的POST请求与GET请求同时存在。

知识点二:手机的数据包与电脑的数据包的区别

不会抓模拟器的数据包与PC端的数据包,可以参考第六天文章

手机的百度页面明显与PC的页面不同,那么它们是通过什么判断的呢?答案:User-Agent头

1737984922_67978b9ac897eee3fd8b6.png!small?1737984917833

手机数据包,Android

1737987689_67979669b7d7362d2537c.png!small?1737987678102

电脑数据包,Windows

1737986603_6797922b791c601e60a34.png!small?1737986593386

可以看到User-Agent头就是主要的区别

用浏览器能看到手机端的界面吗?答案:可以

只需要改成:1737988139_6797982ba71c299ce2a1a.png!small?1737988129536

可以看到请求的地址是一样的,我们将这整个请求包替换成手机端的请求包

1737988173_6797984d0f0a2810f4453.png!small?1737988161551

回显的页面就是手机端的了

1737991020_6797a36c69c285be7c8ae.png!small?1737991008615

总结:

手机端与电脑端的数据包是有区别,而区别往往是由我们的请求包来决定的,请求包当中一般(记住是一般)情况下,是有鉴别手机端和电脑端的字段,当我们对它们进行修改,那么就可以实现电脑端看到手机端的页面。以上,就是手机端和电脑端的区别了。

该技术的常用点在于我们想在电脑的浏览器上复现APP测试出的漏洞。

知识点三:什么是Cookie?

Cookie简单来说就是一种身份验证的令牌,相当于我们生活的门禁卡。只有正确的门禁卡(注意:是正确的门禁卡),我们才能进到正确的屋子里。

当我们有门禁卡的时候才能进门,网站有Cookie的时候才能访问对应账号的内容,对应的权限

例如我们现在没有正确的Cookie

1737991763_6797a653ad59d4f24ade2.png!small?1737991752057

我们讲登录前与登录后的数据包都进行捕获,然后做一个对比。

1737991912_6797a6e8d5a0dce0a8f18.png!small?1737991901327

1737991869_6797a6bd1417136be5c1a.png!small?1737991857452

有正确Cookie的请求包就能正常访问路径了

1737991972_6797a7242f358555ef185.png!small?1737991960716

总结:

Cookie的作用在测试中是至关重要的,当只有我们使用正确的Cookie才能正确的访问网站上的功能点,也就是我们需要先登录再测试,当我们使用渗透工具的时候也应该设置好对应的Cookie,否则渗透工具连门都进不去,又谈何寻找漏洞呢?如果我们获取了管理员的Cookie,那么我们是不是就有了管理员的权限,这就是Cookie作用。

知识点四:状态码是什么?如何通过状态码去判断是否存在?

1737992342_6797a896c3f623e16a7dd.png!small?1737992331155

小迪这里不全,我用我自己的笔记来给大家整理,当然这些只需要了解,我们真正要学习的并没有这么多~

【1XX】

这类状态码表示临时的响应。客服端在收到常规响应之前,应准备接收一个或多个1xx响应

100:继续

101:切换协议


【2xx】

这类状态码表示服务器成功地接受了客服端请求。

200:确定,表示客服端请求已成功

201:已创建

202:已接收

203:非权威性信息

204:无内容

205:充值内容

206:部分内容。表明已部分下载了一个文件,可以续传损坏的下载或者将下载拆分为多个并发的流。

207:多状态(WebDAV)。此消息之前应该还有一条XML消息,其中可能包含几个单独的响应代码,具体取决于发出了多少个子请求。


【3xx】

客服端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同页面,或通过代理服务器重复该请求。

301:已永久移动。此请求和之后所有的请求都应该转到制定的URL

302:对象已移动。对于基于表单的身份验证,此消息通常表示为“对象已移动”。请求的资源临时驻留在不同的URI。由于重定向有时可能会改变,客户端将来在请求时应该继续使用 RequestURI。

只有在 CacheControl 或 Expires 标题字段中指示,此响应才能够缓存。

304:未修改。客户端请求的文档已在其缓存中,文档自缓存以来尚未被修改过。客户端使用文档的缓存副本,而不从服务器下载文档。

307:临时重定向。

【4xx】

以4开头的状态码表示客户端出现问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。

400:错误的请求

401:访问被拒绝。IIS 定义了几个不同的401错误,用于指示更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示。

403:服务器拒绝请求。可以理解为没有权限访问此网站,服务器能够收到请求但拒绝提供服务。IIS 定义了几个不同的403错误,用于指示更为具体的错误原因。

404:服务器找不到请求的网页。例如,访问网站中不存在的页面,或者原有页面被移走或删除,则可能会出现该状态码。IIS 定义了几个不同的404错误,用于指示更为具体的错误原因。

405:用来访问本页面的 HTTP 谓词不被允许(方法不被允许)。当客户端向运行 IIS 的服务器发送一个 HTTP 请求,并且该请求包含服务器无法识别的 HTTP 动词时,就会发生此错误。

若要解决此问题,请确保客户端的请求使用与 HTTP rfc 兼容的 HTTP 动词。

406:客户端浏览器不接受所请求页面的 MIME 类型

407:要求进行代理身份验证

412:前提条件失败

413:请求实体太大

414:请求URI太长

415:不支持的媒体类型

416:无法满足请求的范围

417:执行失败

423:锁定的错误


【401】

401.1:用户名或密码无效导致登陆失败

401.2:服务器配置导致登陆失败

401.3:由于 ACL 对资源的限制而未获得授权。表示存在 NTFS 权限问题。即使您对试图访问的文件具备相应的权限,也可能发生此错误。

例如,如果 IUSR 帐户无权访问 C:WinntSystem32Inetsrv 目录,您会看到这个错误。

401.4:筛选器授权失败

401.5:ISAPI/CGI 应用程序授权失败

401.7:由 Web 服务器上的 URL 验证策略拒绝访问。这个错误代码为 IIS 6.0 所专用。


【403】

403.1:执行访问被禁止。

可能原因:您没有足够的执行许可。例如,如果试图访问的 ASP 页所在的目录权限设为 “无”,或者,试图执行的 CGI 脚本所在的目录权限为 “只允许脚本”,将出现此错误消息。

您没有将试图执行的文件类型的脚本映射设置为识别所使用的谓词(例如,GET 或 POST)。

403.2:读访问被禁止。验证是否已将 IIS 设置为允许对目录进行读访问。另外,如果您正在使用默认文件,请验证该文件是否存在。

403.3:写访问被禁止。验证 IIS 权限和 NTFS 权限是否已设置以便向该目录授予写访问权。

403.4:要求 SSL。禁用要求安全通道选项,或使用 HTTPS 代替 HTTP 来访问该页面。

403.5:要求 SSL 128。禁用要求128位加密选项,或使用支持128位加密的浏览器以查看该页面。

403.6:IP 地址被拒绝。您已经将服务器配置为拒绝访问您当前的 IP 地址。

403.7:要求客户端证书。您已经将服务器配置为要求提供证书进行客户端身份验证,但是您没有安装有效的客户端证书。

403.8:站点访问被拒绝。您已经为用来访问服务器的域设置了域名限制。

403.9:用户数过多。与该服务器连接的用户数量超过了您设置的连接限制。注意:Microsoft Windows 2000 Professional 和 Windows XP Professional 自动设置了在 IIS 上最多10个连接的限制。您无法更改此限制。

403.10:配置无效

403.11:密码更改

403.12:拒绝访问映射表。您要访问的页面要求提供客户端证书。但是,映射到该客户端证书的用户 ID 已经拒绝访问该文件。

403.13:客户端证书被吊销

403.14:拒绝目录列表

403.15:超出客户端访问许可

403.16:客户端证书不受信任或无效

403.17:客户端证书已过期或尚未生效

403.18:在当前的应用程序池中不能执行锁清秋的URL。这个错误代码为 IIS 6.0 所专用。

403.19:不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。

403.20:Passport 登录失败。这个错误代码为 IIS 6.0 所专用。


【404】

404.0:没有找到文件或目录

404.1:无法通过请求的端口访问网站。此错误消息表明,试图访问的网站的 IP 地址不接受来自此请求所用端口的请求。

404.2:Web 服务扩展锁定策略阻止本请求。在 IIS 6.0 中,表示 Web 服务扩展列表中已经阻止了该请求。

404.3:MIME 映射策略阻止了此请求。 如果存在下列情况,将出现此问题:

· 未配置请求的文件扩展名的处理程序映射。

· 没有为网站或应用程序配置相应的 MIME 类型。


【5xx】

服务器由于遇到错误而不能完成该请求。

500:内部服务器错误。很多服务器端错误都可能导致此错误消息。

事件查看器日志包含更详细的错误原因。此外,您可以禁用友好 HTTP 错误消息以便收到详细的错误说明。IIS 定义了几个不同的500错误,用于指示更为具体的错误原因。

501:页眉指定了未实现的配置

502:Web 服务器作为网关或代理服务器时,从上游服务器收到了无效响应。此类错误一般与服务器本身有关(与请求无关)。IIS 定义了几个不同的502错误,用于指示更为具体的错误原因。

503:目前服务器无法使用,一般是因为服务器超载或停止维护

504:网关超时

505:HTTP版本不受支持


【500状态码】

500.12:应用程序正忙于在 Web 服务器上重新启动。这表示您在 IIS 重新启动应用程序的过程中试图加载 ASP 页。

刷新页面后,此消息即会消失。如果刷新页面后,此消息再次出现,可能是防病毒软件正在扫描 Global.asa 文件。

500.13:web服务器繁忙

500.15:不允许直接请求 Global.asa

500.16:UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。

500.18:无法打开 URL 授权存储库。这个错误代码为 IIS 6.0 所专用。

500.19:此文件的数据在元数据库中配置不正确。如果 XML 元数据库在您尝试访问的内容类型中包含无效的配置信息,您就会收到此错误。要解决此问题,请删除或更正无效的配置。此问题通常表示 ScriptMap 元数据库键中存在问题。

500.100:内部 ASP 错误。 如果试图加载的 ASP 页中含有错误代码,将出现此错误消息。若要获得更确切的错误消息,请禁用友好 HTTP 错误消息。默认情况下,只会在默认网站上启用此错误消息。

首先是404状态码

1737992629_6797a9b56d68a21663312.png!small?1737992618997

404状态码的意思是,找不到该资源,顾名思义,就是这个网站没有这个文件、没有这个文件目录~


200状态码

1737993159_6797abc79e4dc0dd4f64c.png!small?1737993148942

成功访问到这个资源,有这个文件或这个目录

1737993195_6797abebb822140be6ce4.png!small?1737993184454有人就会很奇怪,这个明明没有指定文件,为什么也访问为200,很简单因为网站的设置是如果没有指定文件则默认访问index.php文件,这个配置怎么设置呢?小皮举例:

1737993283_6797ac431c9bdd5bee2a4.png!small?1737993271391

像这里,当我们访问一个目录的时候,例如:/admin/,那么网站会自动寻找

/admin/index.php、/admin/index.html,如果没有才返回404,如果有就返回200

说明200状态码表示存在该网页


403状态码

1737993376_6797aca0562a5de12ea74.png!small?1737993364921

表示没有权限访问该文件、目录(文件夹),那么说明什么,这也说明了该文件、目录存在。只是你没有权限而已。

值得注意的是:

一、403状态码不一定表示的是该目录没有权限,它可能是表示该文件没有权限。为什么?原因就和上面设置的网站首页有关,例如:/admin/,它会自动寻找/admin/index.php,找到了,但你没有权限所以是403。那这能证明/admin/666.php你没有权限吗?不能。所以遇到403状态码的时候可以进行fuzz测试。

二、/admin/如果返回了403,能表示/admin/test/目录会返回403吗?答案是不能,所以不仅可以对同一目录下进行fuzz测试,还进行目录fuzz。

1737993729_6797ae015bea0ca2341cf.png!small?1737993718369

1737993772_6797ae2c02953cd062289.png!small?1737993763927


还有一些其他的状态码的总结

1737993859_6797ae83ef7c355fe5848.png!small?1737993848637

总结:

200、403可以确定目标文件、目录(文件夹)存在,500、302可能目标文件、目录存在,200文件、目录存在。也就说说,我们使用工具探测的时候,只需要记录200、403、500、302这四个状态码即可。其他的就用处不大。

知识点五:如何利用工具探测目录?

这里推荐初学者使用的工具, 首先BP有自带爆破的模块

1738036179_679853d392595f7755ed2.png!small?1738036165282

1738036212_679853f47ae81ec191182.png!small?1738036198151

1738036237_6798540d8c7d7afcbe0ce.png!small?1738036223437

记得要将编码给关闭,然后点击启动

1738036281_679854398ea0999a13ea9.png!small?1738036267392

可以看到,我们会自动将路径拼接上去,那么我们就可以选一个好的字典进行爆破了。

首先这里需要说明的是,我们平时挖掘SRC是不允许高线程、高并发的去爆破人家的SRC的网站的,这里面是有纠纷的,所以使用的时候一定要小心谨慎。有授权另说。

下一个就是御剑

1738037373_6798587dbd06d1538380d.png!small?1738037359672

这种就颇为傻瓜式,内置有字典,然后输入域名就可以测试了。

总结:

扫描工具的使用没有太多要说的,只有一点,要授权才可以使用,这也是我们往后渗透测试最重要的一点。这也就是我们常说的目录爆破。

知识点六:密码爆破&加密如何爆破&如何正确利用数据包

1738042630_67986d0603877e13d2700.png!small?1738042615813

这里我们就以DVWA靶场为例:

首先正确账号密码是admin与admin。

我们先输入账号admin与123456

传入代码的数据包为

1738042769_67986d91773b956046538.png!small?1738042755351

查看回显是302,并未登录成功

那么我们如何爆破它的密码呢?注意,这里我们是能确定靶场的账号是admin,单单爆破密码

1738042843_67986ddb689dfed5b6ffc.png!small?1738042829511

1738042890_67986e0a9eda5d67d831e.png!small?1738042877057

导入我们的字典,注意我们的格式应该是每行一个密码。

1738042930_67986e32cb6cb5bcf5d3c.png!small?1738042916604

1738042972_67986e5c3915861ee6ea4.png!small?1738042958265

1738043232_67986f60e05bd615e889b.png!small?1738043218876

可以看到密码是就填充在数据包中了。

那么我们如何爆破使用加密的密码呢?BP中也有自带的功能,当然其他工具也有类似的功能

1738043420_6798701cae9d472e24d6e.png!small?1738043406648

1738043460_67987044a44751b836fd4.png!small?1738043446383

我们这里选择MD5加密,然后再看看它是怎么爆破的

1738043493_67987065ca372c2d2a281.png!small?1738043479851

解密一下这个MD5,确实是44444的加密结果~

1738043522_67987082dc26493b6106a.png!small?1738043508636

总结:

密码爆破是一门学问,当我们想使用密码爆破前需要满足两个条件。确定一个用户名、知道密码字段的加密形式正确的发包。当然,这只是最基础的条件。我们实际测试过程中还需要更多的测试~


知识点七:数据包如何配合工具使用?

1738043850_679871cab035b58a3f68b.png!small?1738043836785

比如说sqlmap这个工具

为什么呢?还记得前面那个cookie吗?cookie的作用就是进门,请求包中有许许多多这样的字段,可能不只是cookie。

所以我们如果使用漏扫工具的时候需要指定一个你请求的数据包,能让你漏扫的成功率,怎么做:

复制数据包

1738043957_67987235090aaa38b44a7.png!small?1738043943008

粘贴到一个1.txt文件里

1738043987_679872537c65bcb1b11c1.png!small?1738043973559

即可使用了,是不是很简单~

关于数据包的自定义测试使用,还可以使用此工具。这个工具的主要作用呢,就是可以快速的构造一个数据包,可以自定义内容、数据包头等功能~

1738044140_679872ecdca8819ba7ef3.png!small?1738044127095

总结:

当我们爆破密码、漏洞扫描的时候,都应该使用正确的数据包~

大总结

本节课主要的内容就是理解数据包,让我们能看懂数据包。只有当我们看懂了数据包才能进行渗透测试嘛~

最后祝大家天天开心、快快乐乐~

免责声明

  • 本文所包含的内容仅用于教育和研究目的,旨在提高信息安全意识,帮助用户了解网络安全防护的重要性。

  • 文章中提及的任何渗透测试技巧、工具或方法,仅供合法授权的安全研究和测试使用。在进行任何渗透测试或安全测试之前,请确保您已获得相关系统或网络所有者的明确授权。

  • 本文作者不对任何因使用文章内容而导致的非法活动、损害或其他不良后果承担任何责任。读者在实施任何技术之前应确保遵守所有适用的法律法规。

  • 本文内容不支持或鼓励任何形式的恶意攻击、未授权的入侵或网络犯罪。

  • 本文内容仅限于教育用途,不得以任何方式用于未经授权的网络安全攻击或破坏行为。

# 渗透测试 # 网络安全 # web安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 zero1234 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
小迪课程文章版2024
zero1234 LV.4
希望大家每天都开开心心,快快乐乐,坚持学习网络安全~
  • 26 文章数
  • 34 关注者
SQL注入绕waf姿势:AND和OR被过滤了怎么办?
2025-04-02
反弹SHELL&不回显外带&正反向连接&防火墙出入站&文件下载
2025-03-22
不会有人2025了还不会反弹shell吧?让你的反弹shell从0到1!
2025-03-22
文章目录