光猫TEWA-500G研究
Posted on
In
硬件安全
光猫TEWA-500G研究
闲来无事研究了一下家里的路由
地址: 192.168.1.1
ssh: admin:admin ,进入后运行sh
挂载读写权限
1 | mount -o remount rw / |
1. 修改用户名只能使用 useradmin
的问题
1 | cd /webs |
查找 disabled
, 将 value=\"useradmin\" disabled='true'
改为 value=\"useradmin\"
2. 修改 ssid 必须为 ChinaNet- 开头的问题
vi NW_Basic.html
删除如下行
1 | var place = str.indexOf("ChinaNet-"); |
网页端 192.168.1.1
登录 telecomadmin
nE7jA%5m
修改 ssid
,开启 pppoe
自动拨号
3. 添加 PPPOE 自动拨号,使 wifi 可以上网。
网络-网络设置- 2_INTERNET_B_VID_ 连接模式 路由,输入宽带用户名和密码
保存,应用。
在状态,网络侧信息即可查看 PPPOE IP地址。检查 电视机 IPTV 是否正常。
4. 修改自动获取的 dns
电信自己的 dns 解析慢,而且有很多问题,如果使用猫的网络,客户端就需要配置dns。所以如果在猫上直接修改dns就可以避免客户端修改的麻烦。
在 ssh 控制台里
1 | cd /etc |
可以看到 resolv.con 指向了 /var/fyi/sys/dns, 每次拨号成功后会修改 这个文件 到电信默认的 dns
1 | mv resolv.conf resolv.conf.bak |
添加阿里和 114 的 dns
1 | nameserver 223.5.5.5 |
保存, reboot 重启路由器,拨号后可以看到 resolv.conf
仍是我们修改的dns,而 resolv.conf.bak
则会发生变化。
CS使用
Posted on
In
安全工具
JAVA安全代码审计整理
Posted on
In
代码审计
GO安全学习
Posted on
In
代码审计
My New Post
Posted on
Fortify常见漏洞修复建议
Posted on
In
代码审计
Fortify常见漏洞修复建议
SQL注入(SQL Injection)
修复方法
- 如果是使用mybaits的框架,使用#符号替代符号,禁止使用,应为$符号是直接拼接数据库语句;
- 如果没有使用框架,直接查询的话,可以使用Java预编译的方法PreparedStatement修复;
1
2
3
4
5
6
7// This should REALLY be validated too
String custname = request.getParameter("customerName");
// Perform input validation to detect attacks
String query = "SELECT account_balance FROM user_data WHERE user_name = ? ";
PreparedStatement pstmt = connection.prepareStatement( query );
pstmt.setString( 1, custname);
ResultSet results = pstmt.executeQuery( );
XXE
修复方法
- 上传XML文件和office文档的地方,解析器禁用外部实体,
1
2
3
4
5
6XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
// This may not be strictly required as DTDs shouldn't be allowed at all, per previous line.
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);Spring-boot-actuator 配置安全
修复方法
- 关闭开启的断点
1
2
3endpoints.enabled = false
// 如果要开启一个端点,可以先关闭所有再开启
endpoints.metrics.enabled = true - 开启安全认证,引入spring-boot-starter-security依赖在application.properties中指定actuator的端口以及开启security功能,配置访问权限验证,这时再访问actuator功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。
1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>1
2
3
4management.port=8099
management.security.enabled=true
security.user.name=x
security.user.password=xXSS漏洞
修复方法
- 通过OWASP的ESAPI防XSS组件,输出编码,先通过Maven引入JAR包;然后使用时,输出编码
1
2
3
4
5
6
7
8
9
10
11<dependency>
<groupId>org.owasp.encoder</groupId>
<artifactId>encoder</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.owasp.encoder</groupId>
<artifactId>encoder-jsp</artifactId>
<version>1.2.2</version>
</dependency>1
2PrintWriter out = ....;
out.println("<textarea>"+Encode.forHtml(userData)+"</textarea>"); - 根据业务场景,校验输入的数据类型和字符长度;
未授权访问的MongoDB
修复方法
- 不要把MongoDB服务器部署在互联网上或者DMZ,开启MongoDB的授权访问;编辑 /etc/mongo.conf 文件,找到 #auth=true , 去掉注释.
创建用户管理员。 - 另外连接MongoDB的时候,配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25public class MongoDBJDBC {
public static void main(String[] args){
try {
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost",27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(addrs,credentials);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
System.out.println("Connect to database successfully");
} catch (Exception e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}硬编码
修复方法
- 不允许把用户的密码硬编码在代码中,可以加密放在配置文件中,最好的方法是存入密码托管服务
密钥长度不够
修复方法
- 目前RSA的密钥长度要求至少2048位,随着算力的增长,将来可能要求更长;
AES的ECB模式不安全,不能隐藏加密模式
修复方法
- 禁用ECB,使用CBC,或者最新的加密算法GCM;
不安全的密码算法
修复方法
- 使用AES-CBC模式等,禁用DES,3DES;
目录遍历漏洞
修复方法
- (1)禁止把绝对路径传入到前端,使用文件id的方法
- (2)过滤../及其编码
自动完成导致信息泄露
修复方法
- input 增加autocomplete=”off”
配置文件中的密码
修复方法
- 将关键字“password”修改为其他单词;
不安全的提交
修复方法
- form使用post提交;
硬编码加密密钥
修复方法
- 删除密钥或者将关键字“key”修改为其他单词;
JSON 注入
修复方法
- xss.js过滤 HTML;使用样例:
filterXSS('<script>alert("xss");</scr' + "ipt>");